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