Как восстановить состояние просмотра фрагмента Android - PullRequest
7 голосов
/ 02 января 2012

У меня есть приложение заголовки фрагмент и содержимое фрагмент на экране.Когда пользователь щелкает элемент во фрагменте заголовков, соответствующий фрагмент создается и вставляется во фрейм, а выбранный заголовок выделяется во фрагменте заголовков.

Транзакция выполняется с fragment.addToBackStack(), поэтому, когда пользователь щелкаетBACK, предыдущий фрагмент восстанавливается и вставляется во фрейм.

Как лучше всего восстановить состояние просмотра, когда менеджер транзакций восстанавливает фрагменты?

Проблема в том, что я должен выделить предыдущее имя фрагмента в фрагменте заголовка, и я должен знать, какой это фрагмент.Я решил это путем сохранения состояния просмотра в моем собственном стеке: при создании фрагмента и восстановлении при изменении обратной транзакции транзакции с помощью прослушивателя диспетчера транзакций.

Но это не похоже на правильное решение.

1 Ответ

1 голос
/ 03 апреля 2013

Перед ответом в следующий раз не забудьте добавить свой код.Скорее всего, мой ответ не поможет вам так сильно, как мог бы, потому что я действительно не знаю ваш код.

Это старый, но в любом случае, если я правильно понимаю ваш вопрос (и архитектуру приложения), звучитслучай для взаимодействия.

Пример:

добавить этот интерфейс в качестве члена к фрагменту контента:

public class ContentFragment extends Fragment{

   public interface onFragmentTitleHighlighted{
      public void highLightTitle(String title);
   }
}

и сделать так, чтобы фрагмент заголовка реализовал его.Убедитесь, что ваши фрагменты содержимого снабжены заголовком fragmnet и добавьте вызов к highLightTitle(String title); в вызове onCreateView (...) фрагмента содержимого.Таким образом, при добавлении нового фрагмента контента содержимое заголовка будет подсвечено.

...