如何在android操作栏中更新菜单文本

时间:2014-07-04 14:03:11

标签: android android-actionbar

我拥有什么 ::

我在操作栏中有一个菜单,其中有两个子项


buffet_map_cart.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_cart"
        android:icon="@drawable/ic_action_camera"
        android:showAsAction="ifRoom"
        android:title="cart">
        <menu>
            <item
                android:id="@+id/action_cart_buy"
                android:icon="@drawable/ic_action_camera"
                android:title="Sort by newest"/>
            <item
                android:id="@+id/action_cart_reserve"
                android:icon="@drawable/button_reserve_selector"
                android:title="Sort by rating"/>
        </menu>
    </item>

</menu>

我想做什么 ::

  • 我想动态更新菜单按钮的文本 action_cart_buyaction_cart_reserve
  • 如何从Java代码中查找此资源并更新文本?

3 个答案:

答案 0 :(得分:2)

您可以使用onPrepareOptionsMenu(Menu)进行动态更新:

  

准备要显示的屏幕标准选项菜单。每次显示菜单时都会调用此菜单。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。

您可以像以下一样使用它:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem buyItem = menu.findItem(R.id.action_cart_buy);
    MenuItem reserveItem = menu.findItem(R.id.action_cart_reserve);
    buyItem.setTitle("New buyItem String");
    reserveItem.setTitle("New reserveItem String");

    return super.onPrepareOptionsMenu(menu);
}

答案 1 :(得分:1)

从菜单中查看findItem而不是MenuItem,有一个setTitle

Edit-- 有一个名为&#34;在运行时更改菜单项的主题&#34;在这个article中也可以帮到你。

答案 2 :(得分:0)

您可以访问MenuonCreateOptionsMenu中的onPrepareOptionsMenu对象(更好)。

public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem item = menu.findItem(R.id.action_cart_buy);
    item.setTitle("Any title");

    return super.onPrepareOptionsMenu(menu);
}

要让UI在适当的时间更新您的ActionBar,您必须致电:

invalidateOptionsMenu();