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

1

Я новичок в этом форуме и в разработке Android, поэтому мой вопрос, вероятно, будет очень глупым, и я извиняюсь за это. Я начал читать Dev Guide на developer.android.com, и до тех пор, пока часть с контекстными меню все не сработает. Теперь я попытался создать контекстное меню с подменю, содержащим некоторые элементы, которые можно проверить. Поэтому я добавил подменю и элементы в свой файл menu.xml и некоторые методы item.setchecked(true) для моего метода onContextItemSelected (...).

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);
   }
}
...

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

Жан-claude91

Теги:
android-layout
android-context
android-menu

1 ответ

0
Лучший ответ

Я сам не пробовал, но если я правильно прочитал описание (http://developer.android.com/reference/android/app/Activity.html#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo)), ваш ресурс компоновки будет вызываться каждый раз при создании меню. Так как "не безопасно удерживать меню после того, как метод возвращается", вам нужно будет обработать выбранный элемент и сохранить этот выбор где-нибудь, а затем передать текущее состояние выбранных элементов в onCreate с помощью menuInfo, установив флажок /unchecked используя эту информацию.

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

  • 0
    Хорошо, прежде всего спасибо за ваш ответ. Теперь, как я уже сказал, я новичок в разработке для Android, поэтому не могли бы вы немного подробнее рассказать о том, как сохранить выборки и передать состояния в метод onCreate, или дать мне ссылку, объясняющую, как это сделать или дать мне имена методов мне нужно искать? Это было бы действительно здорово.
  • 0
    @ Жан-Клод: Вам нужно прочитать о том, что называется предпочтениями и общими предпочтениями. Ссылки: developer.android.com/reference/android/preference/… и developer.android.com/reference/android/content/…
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню