Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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
Android 如何从片段切换到对话框片段_Android - Fatal编程技术网

Android 如何从片段切换到对话框片段

Android 如何从片段切换到对话框片段,android,Android,我正在片段中使用对话片段。现在我想在单击按钮时从根片段切换到对话框片段。这怎么可能。 请帮帮我 对话框片段代码是 public class MyDialogFragment extends DialogFragment implements View.OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance

我正在片段中使用对话片段。现在我想在单击按钮时从根片段切换到对话框片段。这怎么可能。 请帮帮我

对话框片段代码是

  public class MyDialogFragment extends DialogFragment implements View.OnClickListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NORMAL, R.style.MY_DIALOG);
    }

    @Override
    public void onStart() {
        super.onStart();
        Dialog d = getDialog();

        if (d!=null){
            int width = ViewGroup.LayoutParams.MATCH_PARENT;
            int height = ViewGroup.LayoutParams.MATCH_PARENT;
            d.getWindow().setLayout(width, height);
        }
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.my_fragment, container, false);

        return root;
    }

在按钮中写入以下代码,然后单击:

MyDialogFragment myDialogFragment = new MyDialogFragment();

myDialogFragment.show(getFragmentManager(), "myDialogFragment");

单击按钮,您可以使用
myDialogFragment.show()
,只需发布代码片段:

MyDialogFragment myDialogFragment = new MyDialogFragment();

// You cannot access `getFragmentManager()` directly inside fragment so use getActivity()
myDialogFragment.show(getActivity().getFragmentManager(), "DialogFragment");

如果显示另一个片段的
对话框Fragment
,则应使用
getFragmentManager()
getSupportFragmentManager
,具体取决于使用的
Fragment
子类。您可以尝试调用
getChildFragmentManager()
而不是
getFragmentManager()

所以你的代码看起来像

MyDialogFragment mdf = new MyDialogFragment();
mdf.show(getChildFragmentManager(), "tag");

确保您通过了fragmentmanager的正确实例,它正在为meMake工作确保您从支持库中的
android.support.v4.app.DialogFragment
扩展,而不是从
android.app.DialogFragment