2017-02-09 6 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

Вы можете обрабатывать CheckBox щелчок внутри onCreateOptionsMenu по слушать 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; 
} 

И помните изменения android:actionViewClass="android.widget.CheckBox" к app:actionViewClass="android.widget.CheckBox"

+0

Кажется, при установке '' OnCheckedChangeListener' объект checkBox' был нулевым Давать: java.lang .NullPointerException: попытка вызвать виртуальный метод 'void android.widget.CheckBox.setOnCheckedChangeListener (android.widget.CompoundButton $ OnCheckedChangeListener)' на ссылке нулевого объекта – shadygoneinsane

+0

Он работает человек, спасибо. И знаете ли вы, как поменять кнопку «Назад» панели контекстного действия на флажок? Например, когда вы долго нажимаете на список, он будет показывать флажок «Выбрать все». – Meowok

+0

@shadygoneinsane спасибо за исправление меня, пожалуйста, снова проверьте мой ответ –