片段内的FragmentTransaction

The*_*ter 6 android android-fragments

我正在使用jfeinstien10的SlidingMenu.拉出的菜单是Fragment.当用户点击菜单项时,它会执行以下操作:

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

但是,我听说Fragment从另一个人那里控制a是不好的做法Fragment.在这种情况下,这是一种可接受的方法吗?或者我应该对父母使用回调方法FragmentActivity.

如果回调方法是正确的方法,我可以看一个如何工作的例子吗?

waq*_*lam 21

我建议你把它留给活动级别,而不是在片段中执行事务.为此,请在您的活动中定义一个公共方法,然后从您的片段中调用它.例如:

假设您的活动是:

class MainActivity extends Activity{
    ....

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

    ....
}
Run Code Online (Sandbox Code Playgroud)

在您的片段中,进行以下调用:

((MainActivity)getActivity()).replaceFragment();
Run Code Online (Sandbox Code Playgroud)