【发布时间】:2017-09-17 03:45:17
【问题描述】:
我创建了一个片段来显示我的回收站视图。所以我使用 findFragmentById() 方法来查找我的 xml 文件。问题是每次我旋转屏幕时,它都会在另一个之上创建一个更多的回收器视图堆栈。 这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListFragment savedFragment = (ListFragment) getSupportFragmentManager().findFragmentById(R.id.list_recyclerview);
if(savedFragment == null)
{
ListFragment fragment = new ListFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.place_holder,fragment);
fragmentTransaction.commit();
}
}
但是当我使用方法 findFragmentByTag() 时,并没有发生。
谁能解释一下这两种方法有什么区别?
【问题讨论】:
-
您正在将片段添加到 ID 为
place_holder的视图中,因此您应该使用getSupportFragmentManager().findFragmentById(R.id.place_holder);查找它。这种不匹配解释了为什么findFragmentById永远找不到您现有的片段。 -
这是我的大错。非常感谢您的帮助。