6

jfeinstien10 を使用していSlidingMenuます。引き出すメニューはFragment. ユーザーがメニュー項目をクリックすると、次のような処理が行われます。

FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction();
SherlockListFragment mFrag = new ItemsFragment();
t.replace(R.id.main_frag, mFrag);
t.commit();

Fragmentただし、 aから Anotherを制御するのは良い習慣ではないと聞いていFragmentます。このような状況では、これは受け入れられる方法ですか? または、親に Callback Method を使用する必要がありますFragmentActivity

Callback メソッドが適切な方法である場合、これがどのように機能するかの例を見てもらえますか?

4

1 に答える 1

20

フラグメントでトランザクションを実行する代わりに、Activity レベルまで残すことをお勧めします。これを行うには、アクティビティでパブリック メソッドを定義し、フラグメントから呼び出します。例えば:

あなたの活動が次のとおりであるとします。

class MainActivity extends Activity{
    ....

    public void replaceFragment(){
        FragmentTransaction t = getSupportFragmentManager().beginTransaction();
        SherlockListFragment mFrag = new ItemsFragment();
        t.replace(R.id.main_frag, mFrag);
        t.commit();
    }

    ....
}

フラグメント内で、次の呼び出しを行います。

((MainActivity)getActivity()).replaceFragment();
于 2013-03-19T16:18:48.247 に答える