2015-10-25 2 views
1

Я использую следующий код для добавления checkbox в Android Action Bar:Как проверить, установлен ли флажок в Android?

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

Как я могу получить значение выше checkbox, выбран ли он или нет, как Menu item в Android?

ответ

2

Вы можете использовать isChecked() получить проверенное состояние CheckBox:

CheckBox checkBox = (CheckBox) findViewById(R.id.action_checkbox); 

if(checkBox.isChecked()) 
    // do something 
else 
    // do something else 
+0

Спасибо за ваш ответ, но где в onOptionsItemSelected? –

+0

Если вы спрашиваете, где использовать этот код, вы можете использовать его в любом месте, потому что 'findViewById()' будет работать в любом контексте. –

+0

Это пункт меню «Действие». Итак, он не будет работать нигде :) –

1

Пожалуйста, обратитесь к Documentation для простых вопросов, как эти.

Также onOptionsItemSelected является частью меню.

+0

Даже тогда обратитесь к документации. Не тратьте время людей, если вы не проводили исследования. SO - это проблемы, которые нельзя учить. –

+0

Ах! Неважно, ребята :) @SnowTauren На самом деле вы также не искали его на официальном документе, потому что нет информации о «Как использовать флажки в menu_item» и «В чем проблема с этим»? Msgstr "Почему эти флажки не отображаются в панели приложений". не так ли? Но это нормально :) –

+0

@Def Я думаю, вы должны попробовать сначала Google :) Но это нормально. Пожалуйста, обратитесь к этому вопросу: http://stackoverflow.com/questions/8148746/android-action-bar-checkable-menu- item-does-not-work-show-правильно –

1

ваш Java-код, где вы управляете checkbox нажмите событие

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     MenuItem check = menu.findItem(R.id.action_checkbox); 
     CheckBox c_box =(CheckBox) check.getActionView(); 
     c_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      if(b){ 
       Toast.makeText(getActivity(), "checked", 
         Toast.LENGTH_SHORT).show(); 

      }else{ 
       Toast.makeText(getActivity(), "unchecked", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
     return true; 
    } 

ваше меню выглядит ОК

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

надеюсь, что он работает .. дайте мне знать, если вы сталкиваетесь с любой проблемой.

+0

Я получаю исключение, т. Е. 'Попытка вызвать виртуальный метод 'android.view.View android.widget.LinearLayout.findViewById (int) 'в ссылке нулевого объекта' –

+0

, в какой строке вы получаете эту ошибку –

+0

в 'CheckBox c = (CheckBox) rl_viewBag.findViewById (R.id.checkBox); ' –