2012-11-01 38 views
9

我有一个操作栏(使用actionbarsherlock),它有两个项目。其中之一是用户在我的应用程序中收集的点数。点数改变时,我想更改此操作栏按钮。为Android动态更改文本操作栏按钮

我无法弄清楚如何设置该按钮的TextView。我能做些什么来设置通过代码?

回答

5

首先你不设置“TextView of a Button”,因为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。它应该是有帮助的。

+0

所以我不知道这是工作正是我的情况。我有这个actionBar = getSupportActionBar(); \t \t actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);对于操作栏,然后是菜单xml中的一些项目。我无法弄清楚如何访问它们。 – Jeremy

+0

请参阅编辑您的案例 – slezadav

13

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

这对我来说非常合适。谢谢:) –

+0

是的,它的工作原理!谢谢 – harrakiss

+0

优秀!谢谢! –

1

此代码为我工作

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