TabHostには4つのタブがあり、A、B、C、Dとします。それぞれが単なるインデックスページであり、いずれかをクリックすると異なるアクティビティが表示されます。
問題は、ユーザーがタブに表示されているコンテンツから何かを選択したときに、別のアクティビティを開始する必要があることです。他のアクティビティも親タブ自体に表示されます。出来ますか?それとも私は何か他のことを試みなければなりませんか?
TabHostには4つのタブがあり、A、B、C、Dとします。それぞれが単なるインデックスページであり、いずれかをクリックすると異なるアクティビティが表示されます。
問題は、ユーザーがタブに表示されているコンテンツから何かを選択したときに、別のアクティビティを開始する必要があることです。他のアクティビティも親タブ自体に表示されます。出来ますか?それとも私は何か他のことを試みなければなりませんか?
これを試して、Androidクックブックでこのソリューションを見つけて ください。http://androidcookbook.com/Recipe.seam; jsessionid = 5424397F3130CE7769FF47DD67742911?recipeId = 1693&recipeFrom = ViewTOC
新しいアクティビティを開始する代わりに、タブのcontentViewを変更できませんか?
私は間違っているかもしれませんが、TabViewはアクティビティでホストされており、その逆ではないため、タブでアクティビティを開始することはできないと思います(Tabviewはタブごとにアクティビティをホストしません)。
RukmalDiasが提供したリンクを要約します。これがあなたがすることです:
現在のアクティビティでこの関数をコピーして貼り付けて呼び出します。ここで、「id」は、切り替えたい新しいアクティビティのレイアウトの「android:id」です。
public void replaceContentView(String id, Intent newIntent){
View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView();
this.setContentView(view);}
現在のタブ付きアクティビティからビューを切り替えるために電話をかける方法の例を次に示します。
public void switchToNextActivity(View view)
{
Intent myIntent = new Intent(getApplicationContext(), MyNextActivity.class);
replaceContentView("next_activity", myIntent);
}
これらの制限があるため、個々のアクティビティをタブコンテンツとして使用しないことが最善であるというのが一般的なコンセンサスだと思います。代替案へのポインタについては、次の質問と回答を参照してください。
Android:タブ内でアクティビティを使用すべきではないのはなぜですか? Android-タブ、MapView、タブ内のアクティビティ
ビューの階層が失われます。私の場合、戻るボタンを押すとアプリが閉じます。