В моей Android приложения У меня есть TextView объявленный следующим образом:Как изменить текст 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>
В начале приложения, активность 1 запускается (он не использует панель действий). Когда он будет завершен, он начнет действие 2, в котором отображается панель действий.
В начале действия 2 Мне нужно установить текст вида @+id/user_id_label
на определенное значение.
Я пытался сделать это в Activity2.onCreate
и в Activity2.onCreateOptionsMenu
, но в обоих этих методов findViewById(R.id.user_id_label)
возвращает null
.
Как (используя какой метод) можно получить ссылку на текстовый вид @+id/user_id_label
?
Update 1 (28.04.2013 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);
}
Но метка еще не показана.
Update 2 (28.04.2013 21:05):
Это один работает (в методе onPrepareOptionsMenu
):
final TextView textView = (TextView) menuItem.getActionView();
textView.setText(...);
Привет @Dmitri, я попробовал ваше обновление 2, но я получил только null textView, что-то пропустило для меня? – fifth
У меня такой же нулевой TextView, что и @fifth, я подозреваю, что это работает, когда элемент на самом деле «показанAsAction», но не тогда, когда он скрыт в меню переполнения. Как вы думаете? – eskalera