Неизвестный фрагмент после поворота - PullRequest
0 голосов
/ 04 мая 2018

В моем приложении я создаю фрагмент с ключевым словом new и устанавливаю его как FragmentTransaction.

При вращении наткнулся на NullPointerException в методе onActivityCreated(), указывающем на пропущенную инъекцию, что я делаю после вызова new. Я подозревал, что фрагмент не был создан моим кодом и доказал это, зарегистрировав hashCode(). Похоже, что фрагмент автоматически создается системой при вращении.

  • Откуда это?
  • Он создан менеджером фрагментов?
  • Как мне правильно его использовать?
  • Как я могу получить к нему доступ, чтобы установить пропущенное значение?

Пока я игнорирую это, проверяя нулевое значение, в этом случае onActivityCreated() ничего не делает. Вместо этого используйте фрагмент, который я создаю с new. Однако, это не очень приятно - выбросить объект, который уже был создан.

1 Ответ

0 голосов
/ 06 мая 2018

Откуда это? Он создан менеджером фрагментов?

При восстановлении активности Android восстановит фрагменты, которые уже существуют в менеджере фрагментов активности

Как мне правильно его использовать?

public void onCreate(Bundle savedInstanceState){
 if(savedInstanceState == null){
   //activity is created for first time
   //commit the fragment
 }else{
   //Activity is recreated(by means of rotation or something else)
   //Dont commit the fragment, fragmet will be restored by the system
 }
}

Как получить к нему доступ, чтобы установить пропущенное значение?

Обычно вы должны обрабатывать это внутри фрагмента, используя метод onSaveInstanceState. Вы можете получить экземпляр фрагмента, используя getSupportFragmentManager.findFragmentById(R.id.container) или getSupportFragmentManager.findFragmentByTag(tagName)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...