Я нашел 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()
в onAttachFragment
не получит прикрепленный Fragment
, но предыдущий прикрепленный.