-2

我编写了一个非常简单的 CheckBox 示例代码。您可以结帐代码@svn checkout http://my-android-ui-examples.googlecode.com/svn/trunk/my-android-ui-examples-read-only

项目名称是:CheckBoxExample 但是在真正的 android 手机中干净构建和部署之后,我看到的是:

第一次我必须单击两次才能完成操作。下一次之后,只需单击一下即可完成所需的工作。

你能否让我知道这可能是什么原因。

关于 Sudipta Deb。

4

1 回答 1

2

您应该使用 anonCheckedChangeListener来正确监听CheckBox更改。

我重写了您的活动以实现这些并正确设置onClick您的按钮。删除 XML 文件中的 onClick 声明

public class MainActivity extends Activity implements OnCheckedChangeListener
{

    private CheckBox chkAndroid, chkIphone, chkWindows;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        chkAndroid = (CheckBox) findViewById(R.id.checkBox_android);
        chkAndroid.setOnCheckedChangeListener(this);
        chkIphone = (CheckBox) findViewById(R.id.checkBox_ios);
        chkIphone.setOnCheckedChangeListener(this);
        chkWindows = (CheckBox) findViewById(R.id.checkBox_windows);
        chkWindows.setOnCheckedChangeListener(this);
        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v)
            {
                // TODO Auto-generated method stub
                StringBuffer string = new StringBuffer();
                string.append("Iphone checked: ").append(chkIphone.isChecked());
                string.append("\nAndroid checked: ").append(chkAndroid.isChecked());
                string.append("\nWindows checked: ").append(chkWindows.isChecked());
                Toast.makeText(getApplicationContext(), string.toString(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (buttonView == chkAndroid) {
            // do whatever.. you aren't doing anything currently
        } else if (buttonView == chkIphone && isChecked) {
            displaySuggestion();
        } else if (buttonView == chkWindows && isChecked) {
            displaySuggestion();
        }

    }

    private void displaySuggestion()
    {
        Toast.makeText(getApplicationContext(), "Try android", Toast.LENGTH_SHORT).show();
    }
}
于 2012-12-04T19:58:52.830 回答