2017-02-09 103 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謝謝你的指正,請再次檢查我的答案 –