gpt4 book ai didi

java - 单击 PositiveButton 并且条件不成立时防止对话框关闭

转载 作者:行者123 更新时间:2023-11-29 04:18:26 29 4
gpt4 key购买 nike

所以我有以下AppCompatDialogFragment。我希望我的 PositiveButton 关闭对话框,除非某些条件为真。我不知道如何实现这一目标。

public class ColorPicker extends AppCompatDialogFragment {
private EditText editTextCode;
private ColorPickerListener listener;
/*other stuff*/

public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.color_picker, null);
builder.setView(view);
builder.setTitle("Enter HEX code");
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

}
});
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String code = editTextCode.getText().toString();
if(code.length() != 6 && !code.matches("[0-9A-F]+")){
//HERE I WANT TO PREVENT THE DIALOG FROM CLOSING!!
}
listener.applyHex(code);
}
});
/* ... */
return builder.create();
}

最佳答案

您可以通过重写 Positive Button 的 OnClickListener 来实现,如下所示

        dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = editTextCode.getText().toString();
if(code.length() != 6 && !code.matches("[0-9A-F]+")){
//Don't dismiss
} else{
dialog.dismiss();
}
}
});

注意:

请记住在调用dialog.show()之后执行此操作,否则您最终将得到NullPointerException

由于您使用的是 AppCompatDialogFragment,请在 ColorPickeronResume() 中执行以下操作

final AlertDialog dialog = (AlertDialog)getDialog();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = editTextCode.getText().toString();
if(code.length() != 6 && !code.matches("[0-9A-F]+")){
//Don't dismiss
} else{
dialog.dismiss();
}
}
});

关于java - 单击 PositiveButton 并且条件不成立时防止对话框关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50790352/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com