Я обнаружил, что findFragmentByTag
это не так удобно. Если у вас есть String currentFragmentTag
ваш Activity
или родитель Fragment
, вы должны сохранить его onSaveInstanceState
и восстановить его onCreate
. Даже если вы это сделаете, когда Activity
воссозданный, onAttachFragment
будет вызван раньше onCreate
, поэтому вы не можете использовать currentFragmentTag
в onAttachFragment
(например, обновить некоторые представления на основеcurrentFragmentTag
), потому что это , возможно , еще не восстановлена.
Я использую следующий код:
Fragment getCurrentFragment() {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
if(fragments.isEmpty()) {
return null;
}
return fragments.get(fragments.size()-1);
}
Документ о FragmentManager
том, что
Порядок фрагментов в списке - это порядок, в котором они были добавлены или прикреплены.
Когда вам нужно сделать что-то на основе текущего типа фрагмента, просто используйте getCurrentFragment() instance of MyFragment
вместо currentFragmentTag.equals("my_fragment_tag")
.
Обратите внимание, что getCurrentFragment()
in onAttachFragment
не получит присоединение Fragment
, но предыдущее прикрепленное.