onOptionsItemSelected在android中不起作用?

时间:2015-10-26 04:45:05

标签: java android android-layout android-activity android-checkbox

我有一个menu_item,这里是代码:

 <item
    android:id="@+id/action_search"
    android:actionViewClass="android.widget.TextView"
    android:title="In Stocks"
    app:showAsAction="always" />

<item
    android:id="@+id/action_checkbox"
    app:actionViewClass="android.widget.CheckBox"
    android:title="@string/action_check"
    app:showAsAction="always"
    />

我想抓住Menu_item_clicked_event所以,我在Activity文件中写下以下代码

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    switch (id) {
        case R.id.action_checkbox:
            if (item.isChecked()) item.setChecked(false);
            else item.setChecked(true);
            return true;
        case R.id.action_search:
            System.out.println("xas");
        default:
            return super.onOptionsItemSelected(item);
    }
}

当我按下action_search它正在工作但不是action_checkbox时。为什么会这样?我在ADB logs中没有例外。这是检查Checkboxes的正确方法吗?

1 个答案:

答案 0 :(得分:0)

app:actionViewClass应该是android:actionViewClass =“android.widget.CheckBox”

 <item
        android:id="@+id/action_checkbox"
        android:actionViewClass="android.widget.CheckBox"
        android:icon="@drawable/unchecked"
        android:checkable="true"
        android:checked="false"
        android:title="@string/action_check"
        app:showAsAction="always"
        />

然而,复选框不会是不可见的。 Referthis

您可以拥有自己的图标并将其设置为android:icon =

在课堂上

case R.id.action_checkbox:
        if(item.isChecked()){
        item.setIcon(R.drawable.unchecked);
        }
        else {
        item.setIcon(R.drawable.checked);
        }
    item.setChecked(!item.isChecked());
break;