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

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

但是,我听说从另一个Fragment控制Fragment并不是一种好习惯。在这种情况下,这是可以接受的方法吗?还是我应该对父类FragmentActivity使用回调方法。

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

最佳答案

建议您不要将其分成零碎,而应将其保持在“ Activity ”级别。为此,请在您的 Activity 中定义一个公共(public)方法,然后从您的 fragment 中调用它。例如:

假设您的 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();
    }

    ....
}

在您的 fragment 中,进行以下调用:
((MainActivity)getActivity()).replaceFragment();

10-05 18:33