Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过其标记找到DialogFragment?_Java_Android - Fatal编程技术网

Java 如何通过其标记找到DialogFragment?

Java 如何通过其标记找到DialogFragment?,java,android,Java,Android,我一直在寻找解决方案,但我找不到。 我有一个名为ImportDialog的DialogFragment,带有一个同名的标记。如何从MainActivity获取此ImportDialog实例?这就是您选择代码的方式吗 (ImportDialog) getFragmentManager().findFragmentById([ID of layout here]); 我认为如果你实例化这个片段,或者至少让它膨胀,这会有所帮助。只有这样findFragmentById()才能工作 但是,我还是读到了

我一直在寻找解决方案,但我找不到。
我有一个名为ImportDialog的DialogFragment,带有一个同名的标记。如何从MainActivity获取此ImportDialog实例?

这就是您选择代码的方式吗

(ImportDialog) getFragmentManager().findFragmentById([ID of layout here]);
我认为如果你实例化这个片段,或者至少让它膨胀,这会有所帮助。只有这样findFragmentById()才能工作

但是,我还是读到了一些解决方法,例如,如果您没有研究过,可以使用findFragmentByTag选项:

YourFramgent yourFragment = new YourFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment, "yourFragment");
fragmentTransaction.commit();
然后称之为:

YourFragment yourFragment = (YourFragment) getFragmentManager().findFragmentByTag("yourFragment");

试试这个

FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment frg= getFragmentManager().findFragmentByTag("dialog");
 if (frg!= null) {
        ft.remove(frg);
    }
    ft.addToBackStack(null);

DialogFragment newFragment = MyDialogFragment();
newFragment.show(ft, "dialog");

我通过在MainActivity中添加一个接口并在DialogFragment上实现它来解决这个问题,这样我就可以将数据从MainActivity传递到对话框。

findFragmentById()
try itI已经尝试过了,但它返回了容器中的当前片段,不是DialogFragment@someuserpaste findFragmentByTag返回null,即使标记是正确的,也要确保导入了正确的库;