回答

5

不幸的是,在此階段BottomNavigationView中缺少plenty的功能。

你的問題真的很有趣,我寫了這個擴展BottomNavigationView保留狀態,在你的情況下,保存最後選擇的項目。

這裏是gist to the code

這個擴展包括:

  • 給人公共二方法來設置和獲取所選項目編程。
  • 僅保存和恢復最後一次選擇的狀態。

讓我們等到ASL開發人員fix this

+0

爲什麼不將期望的項目設置爲已檢查?就像他們在您發佈的最後一個鏈接中所建議的那樣(https://code.google.com/p/android/issues/detail?id = 225900&q = BottomNavigationView&colspec = ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened) bottomNavigationView.getMenu()。findItem(selectedItem).setChecked(true); –

1

同意尼古拉!

我創建了自己gist

到你需要添加到您Activity旋轉後保存狀態:

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

進入onCreate方法,只是建立BottomNavigationView後:

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

bottomNavigation.setCurrentItem(bottomNavigationPosition); 

這個要點的最大優點是:有幾種聽衆,它顯示你以前的選擇位置離子和聽衆即使在以編程方式設置位置時也會作出反應。一切都是用鏈接寫的,如果你需要的話可以使用。

+1

如果一個位置被認爲是視圖的興趣,那麼它必須保存在視圖實現中。因此,通常的做法是將它保存在視圖的適當的保存和恢復狀態方法中,而不是去「Activity」類。 –

2

我正在使用BottomNavigationView,這裏是應用程序在屏幕旋轉上正常工作的代碼。 首先,我創建一個變量來保存所選菜單
private int saveState;

通過取所選擇的菜單ID在變量

@Override 
    protected void onResume() { 
     super.onResume(); 
     navigation.setSelectedItemId(saveState); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { 
     super.onSaveInstanceState(outState, outPersistentState); 
     saveState = navigation.getSelectedItemId(); 
    } 

然後在onCreate方法檢索的值保存id的值的id ID(如果可用)

 if(savedInstanceState!=null){ 
      navigation.setSelectedItemId(saveState); 
     }else{ 
      FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
      transaction.replace(R.id.content, MapFragment.newInstance()); 
      transaction.commit(); 
     } 
0

我有同樣的問題,我所做的是從2更新5.0.125.3.1它開始正常工作,無需附加代碼。您可以檢查最新版本Support Library Revision website

我希望它有幫助。