通过onListItemClick()更改Activity内的片段

时间:2014-01-28 10:50:44

标签: android android-fragments fragment fragmenttransaction

我有这个Activity,它首先显示一个带有元素列表的Fragment。这与以下代码完美配合:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_act);

    if(null == savedInstanceState)
    {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        ListFragment glfragment = new ListFragment();
        fragmentTransaction.add(R.id.listfrag1, glfragment);
        fragmentTransaction.commit();
    }

}

我有一个ListFragment和一个DetailFragment。但是当我点击列表中的某个元素时,我不知道如何进行转换。我知道fragmentTransaction.replace(),但我不知道什么时候打电话。

我以为我应该使用OnListItemClick()内的ListFragment,但我不知道如何使用片段内的FragmentManager而不是主Activity中的DetailFragment ...我想将一些数据“导出”到{{1}},好像它是一个意图,但事实并非如此。

2 个答案:

答案 0 :(得分:2)

要在Fragment中使用片段管理器,只需调用即可 getActivity().getFragmentManager()代替getFragmentManager()。在OnItemClickListener中实现此功能就足够了。

答案 1 :(得分:1)

我要做的是:

  • 使用一个方法listItemSelected()定义一个接口,并将所选项目的ID作为参数
  • 让您的活动实现此界面
  • 在列表片段的onAttach中,获取活动并将其保留为成员变量,并转换为接口类型。请确保在onDetach中取消引用它。
  • onListItemClick中,在您的活动中调用此方法
  • 在活动中,您现在可以执行新的片段事务,这次需要替换而不是添加片段
  • 要使用正确的参数(id)创建详细信息片段,请使用描述的方法here

这应该可以正常工作。