Android 1.6 & Fragment & Tabhost
Estoy trabajando para actualizar una aplicación de Android (compatibilidad 1.6) que utiliza unaTabHost
para mostrar 3 pestañas diferentes con actividades anidadas.
En el momento en que usé elActivityGroup
truco para mostrar actividades anidadas en una pestaña, pero estoy muy descontento con este método, ya que es muy difícil manejar algunas funciones.
Escuché sobre el paquete de compatibilidad API Fragments para 1.6 y unaFragment
se ve perfecto para lo que quiero hacer (mostrar vistas / características anidadas dentro de una pestaña con efectos de transición y otras cosas) pero no puedo hacer que funcione con unaTabHost
(Estaba destinado a trabajar con unAction Bar
pero no está disponible en el paquete de compatibilidad).
¿Alguno de ustedes encontró una manera de crear tal estructura en sus aplicaciones?
Mi error aquí es:
ERROR/AndroidRuntime(955): Caused by: java.lang.RuntimeException: Unable
para iniciar la actividad ComponentInfo {com.XXX}: java.lang.IllegalArgumentException: No se encontró ninguna vista para el ID 0x1020011 para el fragmento MyFragment
CÓDIG
main.xml
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
MainActivity.java
public class MainActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources();
final TabHost tabs = getTabHost();
TabHost.TabSpec spec;
Intent i;
i = new Intent(this, MyActivity.class);
spec = tabs.newTabSpec("MyActivity").setIndicator("MyActivity",res.getDrawable(R.drawable.tab)).setContent(i);
tabs.addTab(spec);
}
}
MyActivity.class
public class MyActivity extends FragmentActivity {
private static String TAG = "MyActivity";
private static FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ListeResultatFragment fragment = MyFragment.newInstance();
fragmentTransaction.add(android.R.id.tabcontent, fragment, "MyFragment");
fragmentTransaction.commit();
}
}
MyFragment.java
public class MyFragment extends Fragment {
public static MyFragment newInstance() {
MyFragment instance = new MyFragment();
return instance;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment, container, false);
}
}