Уничтожить / выйти из режима действия при повороте экрана

У меня есть ListFragment с MultiChoiceModeListener для режима контекстного действия. После долгого щелчка элементы выбираются. Однако: если я поворачиваю экран, выбор теряется, НО Android остается в режиме действия. Это означает: вы по-прежнему можете выбирать действия над определенными элементами, которые вы выбрали до поворота экрана.

Я хотел бы выйти из режима действия после поворота экрана. Просто показываю нормальное OptionsMenu. Кажется сложнее, чем кажется. Я пробовал их в onCreate():

  • недействительное меню опций ()
  • getListView().clearChoices();

К сожалению, ничего из вышеперечисленного не работает.

Спасибо за помощь. :)


person Daniel    schedule 06.10.2013    source источник


Ответы (1)


Чтобы выйти из ActionMode, нужно вызвать actionMode.finish().

К сожалению, вы получаете ссылку только на ActionMode в onItemCheckedStateChanged, так что вам придется просочиться до Activity. Затем Activity может решить завершить его в onStop/onDestroy или onConfigurationChange (в зависимости от того, обрабатываете ли вы изменения конфигурации).

Это не элегантно, но это лучшее, что я могу придумать прямо сейчас.

РЕДАКТИРОВАТЬ: На самом деле у вас другая проблема - почему ListView не запоминает свой выбор?

Попробуйте не выполнять инициализацию, если savedInstanceState в onCreate не равно нулю (т. е. пусть ListView восстановит свое состояние) и посмотрите, что произойдет потом.

person Delyan    schedule 06.10.2013
comment
Я понял, что использовал неправильный List-Layout. Теперь я использую simple_list_item_activated_1, и ListView запоминает свое состояние. Я могу жить (на самом деле, я предпочитаю) это решение. :) - person Daniel; 06.10.2013