重新创建活动后片段不可见

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()。

以上是关于重新创建活动后片段不可见的主要内容,如果未能解决你的问题,请参考以下文章

FragmentStatePagerAdapter 视图分页器片段在活动重新创建后不显示

Asynctask结果显示重新创建片段后

“不要保留活动” - 当应用程序恢复时,片段仅可见一秒钟

重新创建应用时,片段与底部导航视图图标不匹配

恢复后停止重新创建片段?

替换两个不同的片段后,按下后​​退按钮时会重新创建第一个片段