0

ポップアップコンテキストメニュー項目のテキストを変更するにはどうすればよいですか?コンテキストメニューにヘッダーを付けたいのですが、基になるコンテンツに基づいて設定したいと思います。コンテキストメニューが静的文字列で検索をポップアップしますが、タイトルを動的に変更したいと思います。MenuItemオブジェクトのハンドルを取得できないようです!

Main.java:70: error: int cannot be dereferenced
[javac]             MenuItem mi = R.menu.context_menu.articleTitle;
                                                      ^

コンテキストメニューを表示するコードは次のとおりです。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
    Article a = display.getArticle();
    MenuItem mi = R.menu.context_menu.articleTitle;
    mi.setTitle(a.getTitle());
    mi = R.id.articleURL; // this doesn't work either
    mi.setTitle(a.url);
}

私も試しました

    MenuItem mi = (MenuItem) findViewById(R.id.articleTitle);
    mi.setTitle(a.getTitle());

しかし、それは私にNullPointerExceptionを与えました。メニューリソースは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/contextHeader"
       android:enabled="false"
>
    <item android:id="@+id/articleTitle"
        android:title="Title"
    />
    <item android:id="@+id/articleURL"
        android:title="URL"
    />
</group>
<item android:id="@+id/share"
      android:title="Share"
      android:icon="@android:drawable/ic_menu_share"
/>
<item android:id="@+id/skip"
    android:title="Skip"
    android:icon="@android:drawable/ic_media_next"
/>
</menu>
4

1 に答える 1

1

コンテキストメニューのタイトルを変更する場合は、メニューインスタンスでsetHeaderTitle()を使用します。メニュー項目のテキスト(タイトル)をプログラムで変更するには、menu.findItem(R.id.menu_item_id_defined_in_your_XML)を使用します。その後、タイトル、アイコン、showAsActionなどのこのMenuItemの属性を変更できます。

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
    //Set a title for the context menu
    menu.setHeaderTitle("Title of menu");

    // Select a menu item then change it's title (text)
    MenuItem mi = (MenuItem) menu.findItem(R.id.new_game);
    mi.setTitle("Text of item");
}
于 2012-08-20T01:41:02.367 に答える