2013-08-18 16 views
5

Ho cercato su Google ma non ho trovato alcuna soluzione, per favore aiuto. Ho creato una vista TabBar avendo 3 schede con Tabhost e impostare il suo titolo con TabSpec come questo:Modifica del titolo di tabbar in Android

TabSpec tbhome = tabHost.newTabSpec("Home"); 
tbhome.setIndicator("Selected Topic"); 

Ho 2 pulsanti nella mia un'altra scheda che si trova accanto alla scheda sopra. Ora quello che voglio è, se faccio clic su un pulsante in questa scheda il titolo di questo pulsante deve essere impostato sul titolo della mia scheda Home. Questo è nel codice sopra "Argomento selezionato" deve essere impostato sul titolo del mio pulsante.

Grazie.

+0

prega di inserire il codice in modo che altri può aiutare. –

+0

Sto impostando il titolo della scheda con il codice sopra e voglio cambiarlo in fase di esecuzione mentre clicco il pulsante da una qualsiasi delle altre attività della scheda. !! Non ne so molto sulle schede semplicemente impostandole e sul loro titolo ecc. Quindi non ho nessun altro codice da mettere in piedi !! – Vish

+0

Perché tabhost e non le schede della barra delle azioni? –

risposta

1

Creare una variabile statica e il valore come "Argomento selezionato" e nell'evento clic del pulsante, rendere la proprietà del widget del pulsante come il valore nella variabile statis. Spero che questo sia ciò che intendevi.

+0

Nessuna barra di Monthy viene creata con una sola attività e ogni scheda ha la propria attività. Ora nell'attività della mia seconda scheda ho 2 pulsanti per esempio. Come dovrei cambiare il nome della mia "FIRST TAB" uguale al nome del pulsante cliccato. !! – Vish

+0

@Vish: Innanzitutto devi capire che il tuo problema non ha nulla a che fare con l'attività o la scheda. Se si desidera cambiare il nome della FIRST TAB al nome del pulsante quando si fa clic, provare a creare una variabile stringa chiamata "myVariable" e assegna il testo del pulsante a quella variabile. Nell'evento click, leggi il testo del pulsante e assicurati che tbhome.setIndicator (myVariable); è impostato. – Mothy

+0

Ma in che modo tabActivity (dove per la prima volta vengono create le schede) verrà chiamato di nuovo per impostare il nome della scheda !!! Devo in qualche modo impostareIndicator in FIRSTTAB !! Questo è il vero problema! – Vish

2

prima si ottiene il pulsante e fai finale poi fare clic su Imposta il testo

 final Button bX = (Button) findViewById(R.id.bXX); 
     bX.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        bX.setText("Selected Topic "); 
      } 
     }); 
+0

No, Tabbar viene creato con una sola attività e ogni scheda ha la propria attività. Ora nell'attività della mia seconda scheda ho 2 pulsanti per esempio. Come dovrei cambiare il nome della mia "FIRST TAB" con qualcos'altro dalla seconda scheda. – Vish

2

Il codice potrebbe essere raffinato ma questo shoud fare:

public void onClick(View button) 
{ 
    RelativeLayout tbhome = tabHost.getTabWidget().getChildAt(0); 
    for (int j = 0; j < tbhome.getChildCount(); j++) 
    { 
     if (tbhome.getChildAt(j) instanceof TextView) 
     { 
      ((TextView) tbhome.getChildAt(j)).setText(button.getText()); 
      break; 
     } 
    } 
} 
1

testato, ma mi piacerebbe prova a inviare il nuovo testo Bundle'd in un Intent da un'attività all'altra.

Forse catturarlo con Activity.onNewIntent()

Problemi correlati