Especificaciones de Honeycomb y TabHost

Tengo una pregunta sobre la compatibilidad hacia atrás de Honeycomb. Tengo una aplicación que soporta 2.1 o superior y parece que la mayoría de trabajo en nido de abeja, excepto cuando se inicia una TabActivity.

En particular, cuando agrego pestañas a TabHost, obtengo la siguiente excepción

Android.content.res.Resources $ NotFoundException: Resource ID # 0x0

Al mirar el código que lanza esta excepción, veo que es la especificación de ficha que tiene una etiqueta y un icono. Dentro del código, en LabelAndIconIndicatorStrategy intenta inflar el archivo de diseño R.layout.tab_indicator que no parece estar disponible.

TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each tab // Create an Intent to launch an Activity for the tab (to be reused) intent = new Intent().setClass(_gameActivity, ScoreGameActivity.class); intent.putExtra(GameChangerConstants.STREAM_ID, _stream.pk().toString()); // Initialize a TabSpec for each tab and add it to the TabHost spec = _gameTabHost.newTabSpec("score_game").setIndicator("Score", res.getDrawable(R.drawable.icon_field_gloss)).setContent(intent); _gameTabHost.addTab(spec); 

¿Hay una nueva forma de crear pestañas para panal que no conozco? He vertido sobre la documentación pero no he visto nada que indique un problema con lo que he hecho.

Me gustaría evitar tener que usar fragmentos en este punto hasta que podamos hacer una reestructuración más completa de nuestros widgets de interfaz de usuario y me gustaría entender mejor este problema.

Creo que he encontrado una solución, pero porque la gente es curiosa, aquí está el stacktrace que conseguí cuando me encontré con este problema:

 05-17 13:09:53.462: ERROR/CustomExceptionHandler(500): Uncaught throwable in thread Thread[main,5,main] android.content.res.Resources$NotFoundException: Resource ID #0x0 at android.content.res.Resources.getValue(Resources.java:1014) at android.content.res.Resources.loadXmlResourceParser(Resources.java:2039) at android.content.res.Resources.getLayout(Resources.java:853) at android.view.LayoutInflater.inflate(LayoutInflater.java:389) at android.widget.TabHost$LabelAndIconIndicatorStrategy.createIndicatorView(TabHost.java:568) at android.widget.TabHost.addTab(TabHost.java:226) at com.myApp.ui.TabDialog.addTab(TabDialog.java:80) ... 

En esa línea, tengo el código aproximadamente equivalente a qué sierra sparky:

 spec = myTabHost.newTabSpec("score_game").setIndicator("Score", res.getDrawable(R.drawable.icon_field_gloss)).setContent(intent); myTabHost.addTab(spec); 

Tenga en cuenta que myTabHost es un TabHost y spec es un TabSpec.

Anteriormente, estaba inicializando myTabHost como este:

 //WRONG - This can CRASH your app starting at Android SDK 3.0 TabHost myTabHost = new TabHost(getContext()); 

Para solucionar este problema, comencé a inicializar el TabHost haciendo esto:

 TabHost myTabHost = new TabHost(getContext(), null); 

Y eso lo arregló! Me encantaría encontrar una causa raíz, pero todavía no he sido capaz de averiguarlo.

  • ¿Cómo puedo diseñar las pestañas de Android para obtener un aspecto 3D?
  • Android Exception: ¿Te olvidaste de llamar a 'public void setup (LocalActivityManager activityGroup)'
  • ¿Cómo obtener el contenido de una pestaña dentro de TabHost?
  • Cambiar de TabHost a Fragmentos con Viewpager: Donde poner todo mi código
  • Cómo crear el centro de tabbar en android?
  • FragmentTabHost: las pestañas no son direccionables hasta que se vean por primera vez
  • TabHost con Fragmentos y FragmentActivity
  • Obtener referencia al fragmento anidado de FragmentTabHost
  • ¿Es posible descargar actividades en línea y cargarlas en pestañas en Android?
  • ¿Alguien puede dar código de ejemplo para TabHost en Android?
  • ¿Cómo uso tabHost para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.