Проверенные пункты контекста не остаются проверенными

StackOverflow https://stackoverflow.com/questions/4706434

Вопрос

Я новичок на этом форуме и самой разработке Android, поэтому мой вопрос, вероятно, будет очень глупым, и я прошу прощения за это. Я начал читать руководство Dev на Developer.android.com, и до тех пор, пока часть с контекстным меню все сработало довольно хорошо. Теперь я пытался иметь контекстное меню с подменю, которое содержит некоторые проверенные элементы. Поэтому я добавил подменю и элементы в свой Menu.xml и какой -то элемент. Стоимость (TRUE) метода в мой метод OnContextIteMESTEDESTED (...).

Menu.xml

<?xml version="1.0" encoding="utf-8"?>  
  <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/info"
        android:title="@string/info" />
    <item android:title="@string/change">
        <menu>
           <item android:id="@+id/checkable_item1"
               android:checked="true"
               android:checkable="true"
               android:title="@string/hello"/>
           <item android:id="@+id/checkable_item2"
               android:checkable="true"
               android:title="@string/moin"/>
           <item android:id="@+id/checkable_item3"
               android:checkable="true" 
               android:title="@string/aloha"/>
       </menu>
  </item>   
</menu>

часть моего файла .java

...
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo)
{
   super.onCreateContextMenu(menu, v, menuInfo);
   MenuInflater inflater1 = getMenuInflater();
   inflater1.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
   switch(item.getItemId())
   {
   case R.id.checkable_item1:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   case R.id.checkable_item2:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   case R.id.checkable_item3:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   default:
      return super.onContextItemSelected(item);
   }
}
...

Теперь проблема в том, что когда я открываю меню и нажимаю один из проверенных элементов, и я вижу, что зеленая клеща появляется в маленькой коробке непосредственно перед закрытием контекстного меню, но когда я снова открываю меню, клеща исчез. Теперь я не знаю, почему Tick не остается в коробке. Было бы неплохо, если бы кто -то мог дать мне намек и рассказать, что я делаю не так. Благодарим вас заранее

Жан-Клод91

Это было полезно?

Решение

Я не пробовал сам, но если я правильно прочитал описание здесь (http://developer.android.com/reference/android/app/activity.html#oncreatecontextmenu(Android.view.contextmenu, android.view.view, Android.view.contextmenu.contextmenuinfo)), ваш ресурс макета будет вызывать каждый раз, когда создается меню. Поскольку «небезопасно держаться за меню после возврата метода», вам нужно будет обработать выбранный элемент и сохранить этот выбор где -нибудь, а затем передать текущее состояние выбираемых элементов в Oncreate с MenuInfo, настройка проверенной/неконтролируемой. используя эту информацию.

Если вы этого не сделаете, то меню будет воссоздан каждый раз на основе ваших настроек по умолчанию (menu.xml).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top