私はプログラムでいくつかのタイトルを自分のアクティビティから変更したいと思っています。Android、プログラムでメニュー項目のタイトルを変更する
「ショーsomething1」 と何らかのアクションを実行します。 私は
「の表示/非表示something1」 「の表示/非表示something2」
そして今、私は、テキストを変更したいようないくつかのアイテムを持っていますこのメニュー項目のテキストを変更します。
"隠すsomething1" .....
私は、このソリューションをテストし、ヌル・ポインタ
マイレイアウトを取得:
<?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>
そして、私のコード:
@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);
}
}
このエラーを得た:
プロセス:COM。 packagename.foo、PID:12441 java.lang.NullPointerException:インタフェースメソッド 'android.view.MenuIを呼び出そうとしていますcom.sherdle.universal.rallye.MainActivity.onCreateOptionsMenuでヌル・オブジェクト・リファレンス にTEM android.view.MenuItem.setTitle(java.lang.CharSequence)」(MainActivity.java:646)この行の
:MenuItem item=menu.getItem(R.id.menu_1)
は:)
EDITを助ける必要があります。別の解決策が見つかりました:Android - How to dynamically change menu item text outside of onOptionsItemsSelected or onCreateOptionsMenuをしかし渡すとは対照的に、メニューののgetItem()メソッドは、指定されたインデックスでメニュー項目を返すため
Oh、damn MenuItem item = menu.getItem(R.id.menu_1); //ここitemIndexはintです。注意深く注釈を読みます:-Oありがとう!これはインデックス内で動作します。これは「高速」ですか?menu.findItem(R.id.menu_2); menu1.setTitle( "Text");どの方法が良いですか? findItemまたはgetItem経由で? – georf
@georfどちらが「高速」かはわかりませんが、リソースIDでビューを参照するのがよい方法なので、findItem()をおすすめします。 – DaveNOTDavid
大丈夫です! helpByItemを使用しますが、ヘルプのための最高のバージョンの感謝のようです=) – georf