Bagi mereka yang masih menggunakan SupportLibrary <25.3.0
Saya tidak yakin apakah ini adalah jawaban lengkap untuk pertanyaan ini, tetapi masalah saya sangat mirip - saya harus memproses back
penekanan tombol dan membawa pengguna ke tab sebelumnya di mana dia berada. Jadi, mungkin solusi saya akan berguna untuk seseorang:
private void updateNavigationBarState(int actionId){
Menu menu = bottomNavigationView.getMenu();
for (int i = 0, size = menu.size(); i < size; i++) {
MenuItem item = menu.getItem(i);
item.setChecked(item.getItemId() == actionId);
}
}
Harap diingat bahwa jika pengguna menekan tab navigasi lain BottomNavigationView
tidak akan menghapus item yang saat ini dipilih, jadi Anda perlu memanggil metode ini dalam Anda onNavigationItemSelected
setelah memproses tindakan navigasi:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.some_id_1:
// process action
break;
case R.id.some_id_2:
// process action
break;
...
default:
return false;
}
updateNavigationBarState(item.getItemId());
return true;
}
Mengenai penyimpanan status instance, saya pikir Anda dapat bermain dengan action id
tampilan navigasi yang sama dan menemukan solusi yang sesuai.
BottomNavigationView
tidak melakukan penyimpanan internal negara. Mungkin berharap ini disertakan dalam pembaruan di masa mendatang. Gandakan (dengan beberapa info lebih lanjut) di sini: stackoverflow.com/questions/40236786/…