2017-02-09 53 views
2

我有一个复选框菜单项类型和每当我检查它的菜单。它不会触发任何事情。这是我menu.xml文件处理选项菜单中的复选框事件:Android

<?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> 

这里是我的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); 
    } 
} 

任何想法?

回答

2

您可以通过听setOnCheckedChangeListener这样

@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; 
} 

要记住,app:actionViewClass="android.widget.CheckBox"

+0

变化android:actionViewClass="android.widget.CheckBox"处理复选框内单击onCreateOptionsMenu似乎同时设置'OnCheckedChangeListener'对象'checkBox'为空 赠送:java.lang中.NullPointerException:尝试调用空对象引用虚拟方法'无效android.widget.CheckBox.setOnCheckedChangeListener(android.widget.CompoundButton $ OnCheckedChangeListener)' – shadygoneinsane

+0

它工作的人,谢谢。你有什么想法如何将上下文操作栏的后退按钮更改为复选框?就像当你长按列表视图时,它会显示一个全选复选框。 – Meowok

+0

@shadygoneinsane谢谢你的指正,请再次检查我的答案 –