私のアプリには 4 つのタブがあり、そのうちの 1 つにリスト (tab3) があります。リスト オプションの 1 つが選択されると、別のアクティビティに移動しますが、タブは消えます。別のアクティビティに切り替えた場合でも、それらを永続的に保持する方法はありますか?
すべての XML および Java クラスにタブを配置するという考えがありましたが、それは冗長に思えます。また、望ましくないさまざまなアクティビティ間でタブが移動することを示していると思います。アプリ全体でそれらを静止させたいと考えています。
コード:
public class MainActivity extends Activity {
TabHost th;
TabSpec specs;
ListView libraryView;
String libraryList[] = {"Item1", "Item2"};
@Override
public void onCreate(Bundle savedInstanceState) {
//Always do this at the start.
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_white_text, R.id.library_list_content, libraryList);
libraryView = (ListView) findViewById(R.id.listView1);
libraryView.setAdapter(adapter);
libraryView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String librarySelected = libraryList[position];
Class libraryClass;
try {
libraryClass = Class.forName("com.jj.test.library." + librarySelected);
Intent libraryIntent = new Intent(MainActivity.this, libraryClass);
startActivity(libraryIntent);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//Creating the TabHost and gathering its ID for usage.
th = (TabHost) findViewById(R.id.tabhost);
th.setup();
specs = th.newTabSpec("tag1");
specs.setContent(R.id.tab1);
specs.setIndicator("tab1");
th.addTab(specs);
specs = th.newTabSpec("tag2");
specs.setContent(R.id.tab2);
specs.setIndicator("tab2");
th.addTab(specs);
specs = th.newTabSpec("tag3");
specs.setContent(R.id.tab3);
specs.setIndicator("tab3");
th.addTab(specs);
specs = th.newTabSpec("tag4");
specs.setContent(R.id.tab4);
specs.setIndicator("tab4");
th.addTab(specs);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TabHost
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/black" >
<LinearLayout
android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/tab4"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</LinearLayout>
</FrameLayout>
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginBottom="-4dp" >
</TabWidget>
</LinearLayout>
</TabHost>
</RelativeLayout>
また、Item1 または Item2 (tab3 のリストにあり、別のアクティビティに移動します) をクリックしても、タブは表示されません。これをアプリ全体で永続化するために、MainActivity XML または Class に対して行う必要があることはありますか?