Динамическое изменение текста для кнопки Android Actionbar

У меня есть панель действий (с использованием actionbarsherlock), в которой есть два элемента. Одним из них является количество очков пользователя собраны в приложении. Я хочу изменить эту кнопку панели действий, когда количество очков изменится.

Я не могу понять, как установить TextView этой кнопки. Что я могу сделать это через код?

3 ответов


прежде всего, вы не устанавливаете "TextView кнопки", потому что кнопка расширяет TextView, вы устанавливаете текст самой кнопки. Вы можете попробовать сделать это следующим образом вonCreate():

//I suppose you create custom ActionBar like this
final View addView = getActivity().getLayoutInflater().inflate(R.layout.my_action_bar, null);
bar.setCustomView(addView);
button=(Button)addView.findViewById(R.id.button);
button.setText("Whatever");

Если вы используете меню, то вы должны попробовать этот подход:

getSupportMenuInflater().inflate(R.menu.activitymenu, menu);
MenuItem menuItem=menu.findItem(R.id.menuSearch);

также попробуйте посмотреть здесь,здесь и здесь. Это должно быть полезно.


элементы ActionBar находятся в меню "Параметры", отображаемые в виде кнопок, когда они показаны на панели. Если значок не указан, в качестве заголовка кнопки используется заголовок параметра MenuItem,

Итак, если вы не используете пользовательский вид, и вы просто используете заголовок пункта меню в качестве индикатора оценки, вы можете изменить это в onPrepareOptionsMenu(). Когда вам нужно обновить, позвоните invalidateOptionsMenu(), и onPrepareOptionsMenu будет вызван для вас.

например

//user scores some points
mUserScore += points;
invalidateOptionsMenu();

затем в вызов:

@Override
public void onPrepareOptionsMenu(Menu menu) {
    MenuItem score = menu.findItem(R.id.score_menu_item);
    score.setTitle(String.valueOf(mUserScore));
}

этот код работал для меня

actionBar.setCustomView(R.layout.my_action_bar);
button=(Button)actionBar.getCustomView().findViewById(R.id.button);
button.setText("text");