Legen Sie den Index/die ID des ursprünglich ausgewählten Elements in BottomNavigationView fest
Lesezeit: 4 Minuten
UneXp
habe ich umgesetzt BottomNavigationView und habe keine ahnung wie man auswahl index bzw. setzt MenuItem id (in meinem Fall sollte das mittlere Element standardmäßig ausgewählt sein).
Ich fürchte, es gibt im Moment keine solche Möglichkeit, da es noch zu roh ist, aber trotzdem wird jede Hilfe geschätzt. Vielen Dank!
Ja, ich weiß ungefähr Bodenleiste aber ich kann nicht glauben, dass support.design keine Möglichkeit hat, Elemente programmgesteuert auszuwählen 🙂 Vielleicht einige hackige Lösungen …
– UneXp
25. Oktober 2016 um 10:06 Uhr
Sehen Sie sich diese Antwort an. Dies ist die beste Lösung.
– Wolodymyr Jazykiw
13. Dezember 2016 um 14:50 Uhr
Eine “elegantere” Antwort wurde hinzugefügt, die Sie sich vielleicht ansehen können.
– Jan Slominski
14. Januar 2017 um 18:08 Uhr
Stellen Sie die ID des ausgewählten Menüpunkts mit ein setSelectedItemId:
wobei menuItemIndex der Index des ausgewählten Elements ist.
Funktioniert nicht. Wenn Sie die Animation auf Ihrer unteren Navigationsleiste aktiviert haben, können Sie sehen, dass die Farbe des ausgewählten Elements geändert wurde, aber die Animation befindet sich immer noch auf dem ersten Element des Menüs. Derzeit nicht in der Android-Bibliothek verfügbar. WENN SIE ES JEDERZEIT FUNKTIONIEREN MÖCHTEN: ((BottomNavigationMenuView) bottomNavigationView.getChildAt(0)).getChildAt(menuItemIndex).performClick(); ODER NOCH BESSER: ((BottomNavigationMenuView) bottomNavigationView.getChildAt(0)).findViewById(R.id.id_menu_action).performClick();
– Anne-Claire
30. Januar 2017 um 16:43 Uhr
Kannst du deinen Code posten? Ich verwende die neueste BottomNavigationView aus der Google-Supportbibliothek (25.1.0) und wenn ich den ausgewählten Index so ändere, funktioniert die Animation ohne Probleme.
– Jan Slominski
31. Januar 2017 um 9:30 Uhr
Dadurch wird das Menü nur auf aktiv gesetzt, aber nicht das Menü selbst ausgelöst, wonach ich suche
Menüpunkte können auch zum programmatischen Auswählen verwendet werden, welches Ziel gerade aktiv ist. Es kann mit durchgeführt werden MenuItem#setChecked(true)
Alternativ zu dem, was Jan gepostet hat, können Sie den Artikel auch anhand der ID finden:
Menu menu = findViewById(R.id.navigation).getMenu();
menu.findItem(R.id.navigation_home).setChecked(true);
Auch im Allgemeinen kann ich empfehlen anzurufen .callOnClick() Anstatt von .performClick().
Wenn Sie einen Listener verwenden, wie die Standardimplementierung in Android Studio, versuchen Sie Folgendes:
Ich glaube, die Frage in diesem Zusammenhang wird in verschiedenen Kontexten betrachtet, basierend auf den Antworten hier. Laut Bewertung ist die Fähigkeit erforderlich, sich auf bestimmte Dinge zu konzentrieren BottomNavigationView Gegenstand (definitiv in neuer Klasse mit verschiedenen Fragmenten).
Jetzt könnten Sie BottomNavigationView ODER Buttons oder irgendetwas anklickbares haben, um neue Aktivitäten mit Absicht zu starten: – dh
Intent intent = new Intent(getActivity(), New_Activity.class);
intent.putExtra("EXTRA_PAGE, 1);
startActivityForResult(intent, 30);
Dann
-in unserer New_Activity erhalten wir die Absicht-
Absicht Absicht = getIntent(); int Seite = intention.getExtras().getInt(“EXTRA_PAGE);
Wir durchlaufen dann die Seitenvariable, um die zu finden Nummer/Index für die die aktuelle BottomNavigationView reflektiert , THEN Wir setzen unser Fokusmenüelement (vorausgesetzt, Ihr BottomNavigationView hat ein Menüelement für seine Anzeige)
if(page == 1) {
currentselect = new Pending();
bottomNavigationView.getMenu().getItem(0).setChecked(true);
}
Damit ist die obige Frage beantwortet. Der Rest des Fragment-Schalters wird durch die Anzahl der obigen Posts gut gehandhabt, indem aufgerufen wird:
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener(){
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFrag = null;
switch (item.getItemId()) {
case R.id.pending:
selectedFrag = new Pending();
break;
case R.id.onTransmit:
selectedFrag = new inTransmit();
break;
case R.id.complete:
selectedFrag = new Complete();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.select_field, selectedFrag).commit();
return true;
}
};
HINWEIS: Verwenden BottomNavigationView und ContentFrameLayout ist so sparsam und wird Ihren Code auf über 50 % reduzieren, im Gegensatz zu Likes von ViewPager und Tablayout
Hamed Jaliliani
Kotlin-Code für anfänglich ausgewähltes Element in bottomnavigation.BottomNavigationView :
Verweisen Sie auf diesen Link. androidgifts.com/…
– Jigar Shekh
25. Oktober 2016 um 9:58 Uhr
Ja, ich weiß ungefähr Bodenleiste aber ich kann nicht glauben, dass support.design keine Möglichkeit hat, Elemente programmgesteuert auszuwählen 🙂 Vielleicht einige hackige Lösungen …
– UneXp
25. Oktober 2016 um 10:06 Uhr
Sehen Sie sich diese Antwort an. Dies ist die beste Lösung.
– Wolodymyr Jazykiw
13. Dezember 2016 um 14:50 Uhr
Eine “elegantere” Antwort wurde hinzugefügt, die Sie sich vielleicht ansehen können.
– Jan Slominski
14. Januar 2017 um 18:08 Uhr