微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决重新创建活动后,片段不可见

我正在使用带有四个片段的底部导航视图,以避免重新生成片段,我正在使用以下代码段:

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())时,由于某些原因,无论我点击底部导航键多少次,片段都不可见。

解决方法

您是否正在使用显示/隐藏功能?如果是这样的话, 我认为您必须在类onCreate方法中调用一个函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。