Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: TabHost sin TabActivity

Quiero crear pestañas sin extender TabActivity. (La razón es que TabActivity no puede manejar una barra de título personalizada como parece). yo tengo

public class startTab extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylayout); Resources res = getResources(); LocalActivityManager mlam = new LocalActivityManager(this, false); TabHost tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(mlam); TabHost.TabSpec spec; Intent intent; intent = new Intent().setClass(this, Show1.class); spec = tabHost.newTabSpec("Items").setIndicator("Items", res.getDrawable(R.drawable.items32_ldpi)).setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, Show2.class); spec = tabHost.newTabSpec("Users").setIndicator("Users",res.getDrawable(R.drawable.user32_ldpi)).setContent(intent); tabHost.addTab(spec); } 

}

  • Cómo realizar un seguimiento de la ubicación del dispositivo (iOS y Android) con Phonegap
  • Diferencia entre android: y app: prefix en Android XML?
  • Android BroadCastReceiver para la tecla de volumen arriba y abajo
  • Xamarin Android (Visual Studio 2015) No se pudo conectar con el depurador
  • Phonegap, conexión al servidor sin éxito
  • ¿Cómo saber si hay un sensor en mi dispositivo Android?
  • El error que obtengo es

      07-02 07:11:12.715: ERROR/AndroidRuntime(411): Caused by: java.lang.IllegalStateException: Activities can't be added until the containing group has been created. 

    El xml para la vista es

     <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tabhost" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="5dip"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="fill_parent"></TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="5dip"> </FrameLayout> </LinearLayout> </TabHost> 

    Leí en alguna parte que tengo que utilizar un LocalActivityManager, asumo que estoy faltando algo allí. Alguien una idea?

    ¡Gracias!

  • ¿Cómo hacer que mi diseño sea capaz de desplazarse hacia abajo?
  • ¿Convenciones de nombres de archivos de diseño?
  • Cómo eliminar un registro de ORMLITE?
  • Phonegap, conexión al servidor sin éxito
  • Valor predeterminado de las preferencias de Android
  • ¿Cómo puedo añadir una animación a la actividad finish ()
  • 4 Solutions collect form web for “Android: TabHost sin TabActivity”

    Antes de llamar a tabHost.setup (mLocalActivityManager); Necesita agregar esta línea.

     mlam.dispatchCreate(savedInstanceState); tabHost.setup(mlam ); 

    Similarmente, usted necesita agregar para onResume,

     mlam.dispatchResume(); 

    OnPause (),

      mlam.dispatchPause(isFinishing()); 

    Considere utilizar Views como el contenido de sus pestañas. Esto no solo resultará en menos código, menos espacio de montón consumido, espacio de pila menos consumido y menor utilización de la CPU, sino que también le permitirá superar este problema. Aquí hay dos ejemplos que muestran esta técnica.

     public class ScoreboardActivity extends Activity { LocalActivityManager mlam; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scoreboard); mlam = new LocalActivityManager(this, false); mlam.dispatchCreate(savedInstanceState); TabHost th = (TabHost) findViewById(android.R.id.tabhost); th.setup(mlam); th.addTab(th.newTabSpec("Numpad").setIndicator("Numpad").setContent(R.id.tab1)); th.addTab(th.newTabSpec("CardCount").setIndicator("CardCount").setContent(R.id.tab2)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_scoreboard, menu); return true; } @Override protected void onResume(){ super.onResume(); mlam.dispatchResume(); } @Override protected void onPause(){ super.onPause(); mlam.dispatchPause(isFinishing()); } } 

    A pesar de las consideraciones de diseño, lo siguiente no funciona en absoluto, y la API parece indicar que setContent(Intent i) es válido. Esto funciona cuando la actividad extiende TabActivity , sin embargo, extendiendo Activity y agregando setup() resultados de la llamada de setup() en una exception at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:649)

    Lo curioso es que el LogCat sugiere que me olvidé de llamar a setup()

     mTabHost = (TabHost) findViewById(android.R.id.tabhost); mTabHost.setup(); Intent tab1Intent = new Intent(this, ActivityOne.class); Button tab1View = new Button(this); tab1View.setText("Activity 1"); mTabHost.addTab(mTabHost.newTabSpec("tab_1").setIndicator(tab1View).setContent(tab1Intent)); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.