1

我有这个活动,它首先显示一个带有元素列表的片段。这与此代码完美配合:

@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在 Fragment 内部而不是在主 Activity 中使用......我还想将一些数据“导出”到DetailFragment就好像它是一个 Intent 一样,但是它不是。

4

2 回答 2

2

要在 Fragment 中使用片段管理器,只需调用 getActivity().getFragmentManager()而不是getFragmentManager(). 在您的应用程序中实现这一点OnItemClickListener就足够了。

于 2014-01-28T11:15:26.613 回答
1

我会做的是:

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

这通常应该可以正常工作。

于 2014-01-28T11:01:19.133 回答