http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabs.htmlに示されているように、FragmentTabsを実装しようとしています。私がこれをするまで、すべてがうまくいきました:
私は次のような1つのタブから多くの異なるフラグメントを開始しました:
tab1->フラグメント1--->フラグメント2--->フラグメント3
tab2
しかし、tab2に切り替えて再びtab1に戻ると、fragment3ではなくfragment1画面が表示されます(つまり、最初のタブに3つのフラグメントがあり、3番目のフラグメントにいるときに、2番目のタブに切り替えた後、最初のタブに戻ります。 3番目ではなく1番目のフラグメントに移動します)。
@Override
public void onTabChanged(String tabId) {
TabInfo newTab = mTabs.get(tabId);
if (mLastTab != newTab) {
FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
if (mLastTab != null) {
if (mLastTab.fragment != null) {
ft.detach(mLastTab.fragment);
}
}
if (newTab != null) {
if (newTab.fragment == null) {
newTab.fragment = Fragment.instantiate(mActivity,
newTab.clss.getName(), newTab.args);
ft.add(mContainerId, newTab.fragment, newTab.tag);
} else {
ft.attach(newTab.fragment);
}
}
mLastTab = newTab;
ft.commit();
mActivity.getSupportFragmentManager().executePendingTransactions();
}
}
attach()とdetatch()にコメントすると、次のようになります。