2012-11-01 13 views
9

Ho una barra delle azioni (utilizzando actionbarsherlock) che contiene due elementi. Uno di questi è la quantità di punti che l'utente ha raccolto nella mia app. Voglio cambiare questo pulsante della barra delle azioni quando cambia la quantità di punti.Cambia testo in modo dinamico per il pulsante della barra delle azioni di Android

Non riesco a capire come impostare il TextView di quel pulsante. Cosa posso fare per impostarlo tramite codice?

risposta

5

Prima di tutto non si imposta "TextView di un pulsante", poiché Button estende TextView, si imposta il testo del pulsante stesso. Si può provare a fare questo nel modo seguente in del onCreate() vostra attività:

//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"); 

Se si utilizzano le voci di menu, allora si dovrebbe provare questo approccio:

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

provare Anche alla ricerca here, here e here. Dovrebbe essere d'aiuto

+0

Quindi non so se questo è lavorare esattamente per la mia situazione. Ho questo actionBar = getSupportActionBar(); \t \t actionBar.setNavigationMode (ActionBar.NAVIGATION_MODE_TABS); per la barra delle azioni e quindi alcuni elementi già nel menu xml. Non riesco a capire come accedervi. – Jeremy

+0

vedi modifica per il tuo caso – slezadav

13

Gli oggetti ActionBar provengono dal menu opzioni, resi come pulsanti quando visualizzati sulla barra. Se non si fornisce un'icona, il titolo dell'opzione MenuItem viene utilizzato come titolo del pulsante,

Quindi, a meno che non si stia utilizzando una vista personalizzata e si stia semplicemente utilizzando un titolo di voce di menu come punteggio indicatore, è possibile modificarlo in onPrepareOptionsMenu(). Quando è necessario aggiornare, chiamare invalidateOptionsMenu() e onPrepareOptionsMenu verrà chiamato per te.

esempio

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

poi nel callback:

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

Questo ha funzionato perfettamente per me. Grazie :) –

+0

Sì, funziona !! Grazie – harrakiss

+0

eccellente! Grazie! –

1

Questo codice ha funzionato per me

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