如何获取FragmentTransaction.replace方法创建的片段的引用

时间:2017-07-25 10:04:30

标签: android fragment fragmenttransaction

我使用以下代码在活动中添加了一个片段:

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.parent_fragment_container, new FolderStructureFragment());
ft.commit();

我的问题是如何获得添加片段的引用。我搜索了很多与fragment和FragmentTransaction相关的关键词,但没有找到任何接近我的要求的东西,我认为这是一个非常基本的功能,应该提供给我们。非常感谢任何帮助!

4 个答案:

答案 0 :(得分:2)

有两个主要的可能性:

  • 您可以自己记住参考文献
  • 通过标签
  • 按ID

例如(通过ID几乎相同):

ft.replace(R.id.fragment_container, fragment, tagOfFragment);
getSupportFragmentManager().findFragmentByTag(tagOfFragment);

答案 1 :(得分:1)

尝试使用以下代码。

FolderStructureFragment folderStructureFragment = (FolderStructureFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.parent_fragment_container);

答案 2 :(得分:0)

    FolderStructureFragment folderStructureFragment = new FolderStructureFragment();
    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.parent_fragment_container, folderStructureFragment);
    ft.commit();

此处,folderStructureFragment是新添加片段的参考。

答案 3 :(得分:0)

有一种简单的方法可以在任何需要的时候获得对片段的引用,也就是使用TAG。每当您添加片段时,您可以为其指定一个特定的标记,并且您可以随时使用相同的TAG检索它。

这是你添加它的方式:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment,"myFragmentTag").commit();

现在让我们说,在代码中的某个地方你需要引用这个片段,你只需要调用以下内容

MyFragment myFragment = (MyFragment)getSupportFragmentManager().findFragmentByTag("myFragmentTag");
if(myFragment != null && myFragment.isAdded()){ //you should always do this check when you retrieve fragment instances
    //do whatever you need with it
}