ここに示すように、ActionBar タブと組み合わせて ViewPager を使用しています。下位互換性のために ActionBarSherlock を使用しているため、親アクティビティは SherlockFragmentActivity を拡張し、子フラグメントは SherlockFragment を拡張します。
このソリューションは、スワイプのあるタブではうまく機能しますが、タブの 1 つに関連付けられているフラグメントを動的に変更したいと考えています。
この件に関する多数のSOの回答を読みましたが(たとえば、こことここ)、ViewPager +上記のTabsAdapterを使用するときにフラグメントを動的に変更する方法の明確な説明が見つかりませんでした。
これが私が今持っているものです。ユーザーが既存のフラグメントのボタンを押すと、次のように親アクティビティのフラグメントを置き換えようとします。
AnotherFragment fragment = new AnotherFragment();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
int viewId = R.id.pager; // resource id of the ViewPager
int position = Constants.TAB_2; // tab pos of the fragment to be changed
String tag = "android:switcher:" + viewId + ":" + position;
ft.replace(viewId, fragment, tag);
ft.commit();
mTabsAdapter.notifyDataSetChanged();
これはうまくいかないので、何かが欠けています。getChildFragmentManager() を使用してネストされたフラグメントでも実行しようとしましたが、この関数は API 17、Android 4.2 なしでは使用できないため、問題が発生しました。
助けてくれてありがとう!