Android 1.6, Fragmento e Tabhost
Estou trabalhando na atualização de um aplicativo Android (compatibilidade 1.6) que usa umTabHost
para mostrar três guias diferentes com atividades aninhada
No momento em que usei oActivityGroup
ruque para mostrar atividades aninhadas em uma guia, mas estou muito insatisfeito com esse método, pois é muito difícil lidar com alguns recurso
Eu ouvi falar do pacote de compatibilidade da API Fragments para 1.6 e umFragment
parece perfeito para o que eu quero fazer (mostrar exibições / recursos aninhados em uma guia com efeitos de transição e outras coisas), mas não posso fazê-lo funcionar com umTabHost
(Era para trabalhar com umAction Bar
mas não está disponível no pacote de compatibilidade
Algum de vocês encontrou uma maneira de criar essa estrutura em seus aplicativo
Meu erro aqui é:
ERROR/AndroidRuntime(955): Caused by: java.lang.RuntimeException: Unable
para iniciar a atividade ComponentInfo {com.XXX}: java.lang.IllegalArgumentException: nenhuma visualização encontrada para o ID 0x1020011 para o 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);
}
}