Ich möchte einige Titel aus meinen Activites programmgesteuert ändern. Ich habe einige Produkte wieAndroid, Titel des Menüelements programmgesteuert ändern
"Show/Hide something1" "Show/Hide something2"
Und jetzt möchte ich, um den Text zu ändern:
"Show something1" und eine Aktion zu tun und den Text dieser Menüpunkt ändern:
"Hide something1" .....
ich diese Lösung testen, und ein Null-Pointer
mein Layout erhalten:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:universal="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_1"
universal:showAsAction="never"
android:title="Show/Hide Something1" />
<item
android:id="@+id/menu_2"
universal:showAsAction="never"
android:title="Show/Hide Something2" />
</menu>
Und meinen Code:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.rallye_menu, menu);
MenuItem item=menu.getItem(R.id.menu_1); // here itemIndex is int
item.setTitle("YourTitle");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_1:
// do some action
return true;
case R.id.menu_2:
// doe other action
return true;
default:
return super.onOptionsItemSelected(item);
}
}
hätte diesen Fehler:
Prozess: com. packagename.foo, PID: 12441 java.lang.NullPointerException: Versuch, die Schnittstellenmethode 'android.view.MenuI aufzurufen tem android.view.MenuItem.setTitle (java.lang.CharSequence)‘auf null Objektreferenz bei com.sherdle.universal.rallye.MainActivity.onCreateOptionsMenu (MainActivity.java:646)
in dieser Zeile: MenuItem item=menu.getItem(R.id.menu_1)
Benötigen Sie Hilfe :)
EDIT: eine andere Lösung gefunden: Android - How to dynamically change menu item text outside of onOptionsItemsSelected or onCreateOptionsMenu funktioniert aber nicht
Oh, verdammt MenuItem item = menu.getItem (R.id.menu_1); // hier ist itemIndex int ich sollte die Anmerkungen aufmerksam lesen: -O Danke! jetzt funktioniert es mit in index Ist das "schneller": menu.findItem (R.id.menu_2); menu1.setTitle ("Text"); Welche Methode ist besser? über findItem oder getItem? – georf
@georf Nicht wirklich sicher, was "schneller" ist, aber ich würde findItem() empfehlen, da es eine gute Methode ist, auf eine Ansicht anhand ihrer Ressourcen-ID zu verweisen. – DaveNOTDavid
okay danke! Will findByItem verwenden es scheint die beste Version Danke für Hilfe =) – georf