我使用的是jfeinstien10的SlidingMenu。弹出的菜单是一个Fragment。当用户点击一个菜单项时,它会这样做:
FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction();
SherlockListFragment mFrag = new ItemsFragment();
t.replace(R.id.main_frag, mFrag);
t.commit();但是,我听说从另一个Fragment控制Fragment并不是一个好的做法。在这种情况下,这是一种可以接受的方法吗?或者我应该使用父FragmentActivity的回调方法。
如果回调方法是正确的方式,我可以看看它是如何工作的示例吗?
发布于 2013-03-20 00:18:48
我建议您将事务留给活动级别,而不是以片段的形式执行事务。为此,在您的活动中定义一个公共方法,然后从您的片段中调用它。例如:
假设您的活动是:
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();https://stackoverflow.com/questions/15504274
复制相似问题