6

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

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

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

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

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 回答