我正在制作一个Android应用程序,该应用程序使用BottomNavigationViewEx包含一个包含5个部分/片段的Bottom Navigation小部件,我使用viewpager对其进行管理,但是其中一个片段(片段#3)也使用选项卡布局来嵌套另外2个片段,当用户使用BottomNavigation图标导航到其他片段时,我需要保留选定的选项卡。
问题是我需要保存片段#3的状态(为了简化起见,我在此帖子片段#中称它们为“状态”),即保存TabLayout的片段。
我在片段3中打电话:
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("currentDirectoryFragmentId",tabLayout!!.selectedTabPosition)
}
但是该方法永远不会被调用,并且很有意义,因为我确实从未销毁父活动,但是在每个片段内部正确调用了onDestroy()
。
那么,当用户在属于相同活动的子片段之间导航时,如何保存片段的状态?
答案 0 :(得分:0)
如评论中所述。您可以通过在父活动中使用一个变量,然后在片段的onPause()
和onResume()
方法中引用并设置此变量来完成此操作。
内部家长活动
public static int position = -1;
内部子片段
@Override
public void onPause() {
super.onPause();
MainActivity.position = viewPager.getCurrentItem();
}
@Override
public void onResume() {
viewPager.setCurrentItem(MainActivity.position);
super.onResume();
}