重新创建活动后片段不可见
Posted
技术标签:
【中文标题】重新创建活动后片段不可见【英文标题】:Fragment not visible after when activity is recreated 【发布时间】:2020-12-24 13:50:05 【问题描述】:我正在使用带有四个片段的底部导航视图,以避免重新创建片段我正在使用此代码 sn-p:
private void changeFragment(Fragment fragment, String tagFragmentName)
FragmentTransaction ft = fm.beginTransaction();
Fragment currentFragment = fm.getPrimaryNavigationFragment();
if (currentFragment != null)
ft.hide(currentFragment);
Fragment fragmentTemp = fm.findFragmentByTag(tagFragmentName);
if (fragmentTemp == null)
fragmentTemp = fragment;
ft.add(R.id.content, fragmentTemp, tagFragmentName);
else
ft.show(fragmentTemp);
ft.setPrimaryNavigationFragment(fragmentTemp).commit();
private void showProspectFragment()
changeFragment(ProspectContainerFragment.newInstance(), ProspectContainerFragment.class.getSimpleName());
private void showChatsFragment()
changeFragment(ChatsFragment.newInstance(), ChatsFragment.class.getSimpleName());
....
// Bottom nav item click listener
binding.bottomNav.setOnNavigationItemSelectedListener(item ->
switch (item.getItemId())
case R.id.prospect:
showProspectFragment();
return true;
case R.id.chat:
showChatsFragment();
break;
...
);
但无论何时重新创建活动(使用 recreate()),由于某些原因,片段不可见,无论我点击底部导航多少次。
【问题讨论】:
【参考方案1】:您是否使用了显示/隐藏功能?如果是这样的话,
我认为您必须在类onCreate
方法中调用一个函数。
【讨论】:
我在创建活动时调用 showProspectFragment()。以上是关于重新创建活动后片段不可见的主要内容,如果未能解决你的问题,请参考以下文章