9

我有一个包含两个项目的操作栏(使用 actionbarsherlock)。其中之一是用户在我的应用程序中收集的点数。当点数发生变化时,我想更改此操作栏按钮。

我不知道如何设置该按钮的 TextView。我该怎么做才能通过代码进行设置?

4

3 回答 3

15

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));
}
于 2013-06-22T17:46:14.073 回答
6

首先你没有设置“按钮的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);

也试着看看这里这里这里。应该会有所帮助。

于 2012-11-01T18:51:37.927 回答
1

这段代码对我有用

actionBar.setCustomView(R.layout.my_action_bar);
button=(Button)actionBar.getCustomView().findViewById(R.id.button);
button.setText("text");
于 2015-01-28T20:39:34.227 回答