为Android操作栏按钮动态更改文本

时间:2012-11-01 18:21:12

标签: android android-actionbar actionbarsherlock

我有一个Action Bar(使用actionbarsherlock),里面有两个项目。其中之一是用户在我的应用中收集的积分数量。我希望在点数变化时更改此操作栏按钮。

我无法弄清楚如何设置该Button的TextView。如何通过代码设置?

3 个答案:

答案 0 :(得分:14)

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));
}

答案 1 :(得分:6)

首先你不要设置“按钮的TextView”,因为Button扩展了TextView,你设置了Button本身的文本。您可以尝试在活动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);

同时尝试查看hereherehere。它应该会有所帮助。

答案 2 :(得分:1)

这段代码对我有用

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