2012-11-01 65 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");