android - 如何更改操作栏中 TextView 的文本?

标签 android android-actionbar

在我的 Android 应用程序中,我有一个按以下方式声明的 TextView:

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

    [...]

    <item
        android:id="@+id/intro_button"
        android:showAsAction="ifRoom"
        android:title="@string/intro_button"/>
    <item
        android:id="@+id/help_button"
        android:showAsAction="always|withText"
        android:title="@string/help_button"/>

    [...]

    <item
        android:id="@+id/user_id_label"
        android:actionViewClass="android.widget.TextView"
        android:showAsAction="ifRoom"
        android:title="@string/session_info_label"/>
</menu>

在应用程序启动时,启动 Activity 1(它不使用操作栏)。完成后,它会启动 Activity 2,其中会显示操作栏。

在 Activity 2 开始时,我需要将 View @+id/user_id_label 的文本设置为某个值。

我尝试在 Activity2.onCreateActivity2.onCreateOptionsMenu 中执行此操作,但是在这两种方法中 findViewById(R.id.user_id_label) 返回 null

我如何(使用哪种方法)检索对 @+id/user_id_label TextView 的引用?

更新 1(2013 年 4 月 28 日 20:25):

我试过这个:

@Override
public boolean onCreateOptionsMenu(final Menu aMenu) {
    final MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.actions, aMenu);

    this.menu = aMenu;

    return true;
}

@Override
public boolean onPrepareOptionsMenu(final Menu aMenu) {
    final MenuItem menuItem = this.menu.findItem(R.id.user_id_label);                               
    menuItem.setTitle(getString(R.string.user_id_text,
            getIntent().getIntExtra(ConnectToServerActivity.USER_ID, -1)));
    return super.onPrepareOptionsMenu(aMenu);
}

但标签仍然没有显示。

更新 2(2013 年 4 月 28 日 21:05):

这个有效(在方法 onPrepareOptionsMenu 中):

final TextView textView = (TextView) menuItem.getActionView();

textView.setText(...);

最佳答案

在字段变量中保存对 OptionsMenu 的引用:

Menu mMenu;

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        [...]

        this.mMenu = menu;
        return true;
    }

然后你可以这样做:

MenuItem myMenuItem = mMenu.findItem(R.id.user_id_label);
myMenuItem.setTitle("New title!");

关于android - 如何更改操作栏中 TextView 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264689/

相关文章:

android - 如何在android中添加雪花效果?

Android NDK cmake JNI 静态库

Android actionbar 子菜单项显示在 actionbar 顶部而不是栏下方

Android ActionBar 自定义布局样式

android - ActionBar的tabs和Fragment如何实现向上导航?

Android:从抽屉导航更改 ActionBar 中的标题

android - setBackgroundDrawable 无法正常工作

android - java.net.协议(protocol)异常 : expected * bytes but received * #4302

android - 如何根据内容动态收缩 WebView 大小?

Android 应用程序锁定相机