片段内部的片段交易
问题描述:
我正在使用jfeinstien10的SlidingMenu
。拉出的菜单是Fragment
。当用户点击菜单项,但它确实是这样的:片段内部的片段交易
FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction();
SherlockListFragment mFrag = new ItemsFragment();
t.replace(R.id.main_frag, mFrag);
t.commit();
不过,我听说这是不好的做法,从另一个Fragment
控制Fragment
。在这样的情况下,这是一种可接受的方法吗?或者,我应该使用回拨方法给家长FragmentActivity
。
如果一个回调方法是正确的方法,我可以请看一个这是如何工作的例子吗?
答
不是在片段中执行事务,而是建议您将其保留在活动级别。为此,请在您的活动中定义一个公共方法,然后从您的片段中调用它。例如:
假设你的活动是:
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();