我在发布此问题,因为我在这里找不到任何方便的答案或类似问题。
这是我的情况:我有MainActivity,它的tabParentFragment本身具有childFragment
MainActivity
------ TabParentFragment
------------- ChildFragment
我尝试从childFragment调用DialogFragment并设置其targetFragment,但出现错误:
Fragment MyDialogFragment {481d668 ...} declared target fragment ChildFragment{70c2a81 #0 id=0x7f0900de android:switcher:2131296478:0} that does not belong to this FragmentManager!
这是我在ChildFragment中如何调用MyDialogFragment的方法:
MyDialogFragment mdialog = new MyDialogFragment();
mdialog.setTargetFragment(ChildFragment.this, 91);
mdialog.show(getActivity().getSupportFragmentManager(), "MYDFTAG");
这是我从TabParentFragment调用ChildFragment的方式:
TabsPagerAdapter adapter = new TabsPagerAdapter(getChildFragmentManager());
ChildFragment = new ChildFragment ();
adapter.addFragment(childFragment, "The Child");
viewPager.setAdapter(adapter);
....
这是我从MainActivity调用TabParentFragment的方法:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new TabParentFragment()).commit();
我花了数小时试图找出问题所在,但似乎没有使它起作用。你能帮我吗 ?
您可以尝试显示 MyDialogFragment
MyDialogFragment mdialog = new MyDialogFragment();
mdialog.setTargetFragment(ChildFragment.this, 91);
mdialog.show(getParentFragment().getChildFragmentManager(), "MYDFTAG");
基本上,当您设置setTargetFragment时,将对其进行检查,MyDialogFragment
并且您的目标片段必须与FragmentManager相同
在这种情况下,我建议你看MyDialogFragment
通过getChildFragmentManager
的ChildFragment
。无需setTargetFragment
通话,targetFragment.onActivityResult
您可以直接在parentFragment
内部拨打电话MyDialogFragment
MyDialogFragment mdialog = new MyDialogFragment();
mdialog.show(getChildFragmentManager(), "MYDFTAG");
sendResult(parameters)
内部声明方法ChildFragment
,MyDialogFragment
可以调用
((ChildFragment)getParentFragment()).sendResult(parameters)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句