2011-06-22 14 views
5

Tengo problemas para configurar el contenido en una pestaña que he inflado de un archivo XML.Android: ¿Cómo cambiar dinámicamente el contenido de pestañas infladas?

agrego la pestaña a mi TabHost ('pestañas') de forma dinámica de la siguiente manera:

 TabSpec passSpec = tabs.newTabSpec("Pass Tab"); 
     passSpec.setIndicator("Passengers", getResources().getDrawable(R.drawable.tab_message)); 

     passSpec.setContent(new TabHost.TabContentFactory() { 
      public View createTabContent(String tag) { 
       View layout = mInflater.inflate(R.layout.tab_content_passengers, null);     
       return(layout); 
      } 
     }); 
     tabs.addTab(passSpec); 

Esto funciona bien ... lo que estoy teniendo problemas con que está cambiando el contenido de esa pestaña tarde en. ¿Hay alguna manera de lograr esto sin volver a inflar todas las pestañas con diseños completamente nuevos?

Estoy tratando lo siguiente y no pasa nada:

mInflater = LayoutInflater.from(this); 
    View layout = mInflater.inflate(R.layout.tab_content_passengers, null); 
    TextView t = (TextView) layout.findViewById(R.id.testText); 
    t.setText("Hello world??"); 

Respuesta

4

Puede mantener una referencia a la layout variable (tal vez en un mapa o algo así) y luego modificarlo programáticamente más adelante así:

tabMap.get(tabId).findViewById(R.id.testText).setText("The text is changed now!"); 

Siempre que lo haga en el subproceso de interfaz de usuario, los cambios deben reflejarse inmediatamente.

+0

Impresionante, gracias, sabía que era solo una tonta cuestión de alcance – TomBomb

0

tratar de hacer

t.invalidate(); 

Esto debería forzarlo a volver a dibujar

Cuestiones relacionadas