处理选项菜单中的复选框事件:Android

Meo*_*wok 4 checkbox android menu

我有一个带有复选框菜单项类型的菜单,每当我检查它时。它不会触发任何事情。这是我的 menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/delete"
    android:actionViewClass="android.widget.CheckBox"
    android:checkableBehavior="single"
    android:title="All"
    android:titleCondensed="All"
    app:showAsAction="ifRoom"></item>
</menu>
Run Code Online (Sandbox Code Playgroud)

这是我的onOptionsItemSelected

  @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.delete:
            Toast.makeText(this,"Hello",Toast.LENGTH_SHORT).show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Pha*_*inh 5

您可以onCreateOptionsMenu通过setOnCheckedChangeListener像这样收听来处理 CheckBox 在里面的点击

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);

    CheckBox checkBox = (CheckBox) menu.findItem(R.id.delete).getActionView();
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                // perform logic
            }
        }
    });

    return true;
}
Run Code Online (Sandbox Code Playgroud)

并记住更改android:actionViewClass="android.widget.CheckBox"app:actionViewClass="android.widget.CheckBox"