Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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返回true或false?_Java_Android_Android Fragments - Fatal编程技术网

Java 如何使用DialogFragment返回true或false?

Java 如何使用DialogFragment返回true或false?,java,android,android-fragments,Java,Android,Android Fragments,我有一个密码对话框类,当他们想要删除或添加内容时,会询问密码。我想要的是可以反复使用此对话框。这是我的密码对话框类 public static class myPasswordDialog extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Buil

我有一个密码对话框类,当他们想要删除或添加内容时,会询问密码。我想要的是可以反复使用此对话框。
这是我的密码对话框类

public static class myPasswordDialog extends DialogFragment {

        @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            LayoutInflater inflater = getActivity().getLayoutInflater();
            builder.setView(inflater.inflate(R.layout.password_dialog, null))
                    .setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            EditText passField = (EditText) ((AlertDialog) dialog).findViewById(R.id.password);
                            String password = passField.getText().toString();
                            if (password.matches(getString(R.string.pass_key))) {

                                //it should do something when it is correct
                            } else {
                                Toast.makeText(getActivity(), "Wrong Password", Toast.LENGTH_SHORT).show();
                            }
                        }
                    })
                    .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.dismiss();
                        }
                    });
            return builder.create();
        }
    }
这就是我如何调用我的密码类

deletebtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        myPasswordDialog mPasswordDialog = new myPasswordDialog();
                        mPasswordDialog.show(getFragmentManager(), "delete");
                    }
                });

我想的是,如果他们输入了正确或错误的密码,片段将返回一个布尔值。但是我可以用什么方法来实现呢?

实现一个接口并设置一个回调

public static class MyPasswordDialog extends DialogFragment {
    public interface MyCallBack {
        public void onResult(boolean b);
    }

    public MyCallBack callBack;

    public MyPasswordDialog(MyCallBack callBack) {
        this.callBack = callBack;
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    // your code

    public void onClick(DialogInterface dialog, int id) {
        EditText passField = (EditText) ((AlertDialog) dialog).findViewById(R.id.password);
        String password = passField.getText().toString();
        if (password.matches(getString(R.string.pass_key))) {
            callBack.onResult(true); // pass false depends on condition
        } else {
        // code
        }
    }

    }

}
如何打电话

deletebtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myPasswordDialog mPasswordDialog = new MyPasswordDialog(new MyPasswordDialog() {
                        @Override
                        public void onResult(boolean result) {
                        // result will be your ans
                        }
                    });
                    mPasswordDialog.show(getFragmentManager(), "delete");
                }
            });

谢谢你,伙计。我刚意识到我可以用这个:D