我使用以下代码在活动中添加了一个片段:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.parent_fragment_container, new FolderStructureFragment());
ft.commit();
我的问题是如何获得添加片段的引用。我搜索了很多与fragment和FragmentTransaction相关的关键词,但没有找到任何接近我的要求的东西,我认为这是一个非常基本的功能,应该提供给我们。非常感谢任何帮助!
答案 0 :(得分:2)
有两个主要的可能性:
例如(通过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
}