उन लोगों के लिए, जो अभी भी SupportLibrary <25.3.0 का उपयोग करते हैं
मुझे यकीन नहीं है कि यह इस प्रश्न का पूर्ण उत्तर है, लेकिन मेरी समस्या बहुत समान थी - मुझे back
बटन प्रेस को संसाधित करना था और उपयोगकर्ता को पिछले टैब पर लाना था जहां वह था। तो, शायद मेरा समाधान किसी के लिए उपयोगी होगा:
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);
}
}
कृपया, ध्यान रखें कि यदि उपयोगकर्ता अन्य नेविगेशन टैब BottomNavigationView
को दबाता है , तो वर्तमान में चयनित आइटम स्पष्ट नहीं होगा, इसलिए आपको onNavigationItemSelected
नेविगेशन विधि के प्रसंस्करण के बाद इस पद्धति को कॉल करने की आवश्यकता है :
@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;
}
उदाहरण के राज्य की बचत के बारे में मुझे लगता है कि आप action id
नेविगेशन दृश्य के साथ खेल सकते हैं और उपयुक्त समाधान पा सकते हैं।
BottomNavigationView
राज्य की कोई आंतरिक बचत नहीं करता है। संभवतः भविष्य के अपडेट में इसे शामिल किए जाने की उम्मीद है। डुप्लीकेट (कुछ और जानकारी के साथ): stackoverflow.com/questions/40236786/…