1

私の質問はこれに似ています。ただし、もう少し一般的です。説明してみましょう。私はActionBarSherlockをTabsadapterとViewpagerで使用しています。すべてのフラグメントを自分のものに置き換えました。フラグメントの1つにボタンがあり、クリックすると次のonclickハンドラーが起動します。

public void onAcceptSelected() {

    SherlockFragment addFirstChildFragment = AddChildFragment.newInstance();
    getSupportActionBar().setTitle("The new title of the fragment here");
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
     ft.replace(R.id.pager, addFirstChildFragment);
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
     ft.addToBackStack(null);
     ft.commit();

}

問題は、新しいフラグメントで次のメソッドが使用されることです。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
     View v = inflater.inflate(R.layout.fragment_childeditor, container, false);
    return v;
 }

実際に新しい表示レイアウトを提供することにはなりません。タブの内容は空です(たとえば、ホロホワイトをテーマにした空のタブが表示されます)。

今、私は次の質問があります:

私の主な質問は、「タブ内のフラグメントをどのように置き換える必要があるか」です。サブ質問あり:

  1. タブとページャーの例のXMLを適合させ、フラグメントコンテナーに適合させる必要がありますか?
  2. 多くのフラグメントを持つタブとビューページャーを使用するためのベストプラクティスは何ですか?タブをメインナビゲーションとして使用したいのですが、さまざまなフラグメントがたくさんあります。
4

2 に答える 2

1

そのかなり単純です。他のフラグメントを置き換えるのと同じように、タブに関連付けられたフラグメントを変更するだけです。

            Fragment donorpage = new DonorRegistrationPage(); // new fragment for the tab

            FragmentTransaction transaction = getFragmentManager().beginTransaction();

            transaction.replace(R.id.fragment_container, donorpage, "frag");

            transaction.addToBackStack(null);

            // Commit the transaction
            transaction.commit();

これにより、タブのフラグメントが置き換えられます。

于 2013-11-24T16:18:47.170 に答える
0

答えは、この質問への答えにあります。 アクションバーシャーロック+タブ+マルチフラグメント?

私の質問に対する答えは次のとおりです。1。いいえ、これは必要ありません。プログラムで追加できます。2.上記のリンクの例に示すように、fragmentstacksを使用できます。

于 2012-11-06T12:23:26.197 に答える