当用户在Viewpager中的片段之间导航时,如何保存片段状态?

时间:2018-11-18 20:33:24

标签: android kotlin android-viewpager

我正在制作一个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()

那么,当用户在属于相同活动的子片段之间导航时,如何保存片段的状态?

1 个答案:

答案 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();
}