5

Estoy tratando de utilizar Android Honeycomb creando una aplicación de edición de texto simple que utiliza la barra de acciones y las pestañas. Me encuentro con un problema molesto sin embargo. Después de que se creó una pestaña y se agregó a la barra de acción, me gustaría cambiar el texto que se muestra en la pestaña. Pensé que usando el siguiente método, ActionBar.Tab.setText (CharSequence arg0) haría el truco, sin embargo, no parece estar cambiando el texto visible. Lo que es más raro aún es que si tuviera que llamar a getText(), devuelve el texto al que cambié la pestaña. A continuación se muestra un fragmento de código que estoy usando para cambiar el texto de pestaña:Cambio del texto de la pestaña en una pestaña de la barra de acciones de Honeycomb después de haber sido creado

int currentTabIndex = ab.getSelectedNavigationIndex(); 
currentTabTitle = (String) ab.getTabAt(currentTabIndex).getText(); // just to check 
ab.getTabAt(currentTabIndex).setText(fileName);      // change tab text 
currentTabTitle = (String) ab.getTabAt(currentTabIndex).getText(); // just to check 

Realmente estoy en una pérdida y buscado por todas partes. Agradecería mucho cualquier consejo que alguien tenga. Gracias por tu tiempo.

+0

buscadores de Internet, por favor vote para este problema: http://code.google.com/p/android/ issues/detail? id = 17129 & q = barra de acciones & colspec = ID% 20Tipo% 20Status% 20Propietario% 20Summary% 20Stars – xandy

Respuesta

0

Pruebe quitar la pestaña y volver a agregarla en el índice deseado después de cambiar el texto. (Es un error. La vista asociada no se actualiza cuando configura el texto después de agregarlo.)

+0

¡Gracias por la información! Voy a intentar esto en un momento. Con suerte, arreglarán esto en una actualización pronto. – Deeek

+2

"Pronto" es relativo, pero sí, lo arreglaré. ;) – adamp

10

Esto es un problema tonto y agregar y eliminar pestañas es una mala idea porque si usa fragmentos lo hará termina eliminando y volviendo a agregar tu fragmento con su pestaña. Usar una vista personalizada parece funcionar mucho mejor y una bonificación adicional te ofrece una mayor personalización.

Aquí es cómo hacer una pestaña con una vista personalizada que se ve y se comporta de forma idéntica a la falta de pago:

ActionBar bar = getActionBar(); 

TabListener tabListener = new TabListener() { 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 
}; 

Tab tab1 = bar.newTab() 
      .setText("Info") 
      .setTabListener(tabListener) 
      .setCustomView(makeTabDummy("Info", android.R.drawable.ic_menu_info_details)); 

bar.addTab(tab1); 

y aquí está el píxel perfecta visión ficticia:

private TextView makeTabDummy(String text, int icon) { 

    TextView tv = new TextView(this); 
    tv.setText(text); 
    tv.setTextColor(0xffffffff); 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); 
    tv.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT)); 
    tv.setCompoundDrawablesWithIntrinsicBounds(icon, 0, 0, 0); 
    tv.setGravity(Gravity.CENTER); 

    return tv; 
} 

Desde aquí podemos cambiar los iconos y el texto en la pestaña sin ningún problema. Ejemplo:

TextView tv = (TextView) tab1.getCustomView();   
tv.setText("change the text!"); 
tv.setCompoundDrawablesWithIntrinsicBounds(android.R.drawable.btn_star_big_on, 0, 0, 0); 

... y todo funciona como debe

+2

¡esta es una muy buena respuesta! se debe aceptar – Erdal

+0

esto se soluciona en ICS y puede usar las pestañas de la manera normal ... – ckozl

+0

Veo este problema después del cambio de orientación en el paquete de compatibilidad (Api 18), así que usaré esta solución. – Divers

Cuestiones relacionadas