不属于此 FragmentManager 的已声明片段的目标片段

2022-09-01 20:37:37

我做了一个活动A,里面有一个片段X。在片段 X 中,EditText 项具有打开片段 Y 的单击事件。此片段显示名称列表。我在列表中按一个名称,片段Y关闭并将所选名称发送到片段X EditText。这是我写的代码:

YFragment y = new YFragment();
y.setTargetFragment(x.class, code);
getActivity().getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.frame, y)
    .addToBackStack(null)
    .commit();

在片段Y中,我有发送数据的代码,但问题出在上面的这个代码块中。如果我注释掉 setTargetFragment 行,代码将起作用,但没有用,因为不会发送数据。如果我运行该应用程序,则会发生此错误:

java.lang.IllegalStateException: Fragment y{46d3d31 #3 id=0x7f090069} 声明的目标片段 x{e2c16 #0 id=0x7f090104 android:switcher:2131296516:0} 不属于此 FragmentManager!


答案 1

要使用 ,新目标和目标必须托管在同一个 .不会发生这种情况的最常见情况是,如果您使用 或 与 一起使用。setTargetFragment()FragmentFragmentFragmentManagerActivity.getSupportFragmentManager()Fragment.getFragmentManager()Fragment.getChildFragmentManager()


答案 2

在我的解决方案中,替换

getChildFragmentManager()

Activity.getSupportFragmentManager() or Fragment.getFragmentManager()

这对我有用。谢谢本先生


推荐