在屏幕旋转期间保存BottomNavigationView所选项目

Eug*_*nov 10 android android-support-library android-support-design

使用ASL的25.0 BottomNavigationView我遇到了一些麻烦,比如保存所选项目(或他的索引)和编程选择的项目.

Nik*_*ski 6

不幸的是,在这个阶段缺少很多功能BottomNavigationView.

你的问题非常有趣,我写了这个扩展BottomNavigationView,保留了状态,在你的情况下,保存了最后选择的项目.

这是代码的要点

此扩展包括:

  • 提供公共两种方法来以编程方式设置和获取所选项目.
  • 仅为最后一个选择保存和恢复状态.

让我们等到ASL开发者解决这个问题.


Bor*_*nov 5

同意尼古拉!

我创建了自己的要点

要在旋转后保存状态,您需要添加Activity

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putInt("opened_fragment", bottomNavigation.getCurrentItem());
    super.onSaveInstanceState(outState);
}
Run Code Online (Sandbox Code Playgroud)

并进入onCreate方法,就在设置之后BottomNavigationView

final defaultPosition = 0;
final int bottomNavigationPosition = savedInstanceState == null ? defaultPosition :
            savedInstanceState.getInt("opened_fragment", defaultPosition);

bottomNavigation.setCurrentItem(bottomNavigationPosition);
Run Code Online (Sandbox Code Playgroud)

这个要点的最大优点是:侦听器的种类很少,它会向您显示以前的选择位置,即使以编程方式设置了位置,侦听器也会做出反应。一切都写在链接中,如果需要,请使用。