我正在使用带有2个按钮的AlertDialog(一个正面,一个负面).我为那些没有提及解雇的按钮设置了一个处理程序.确实在点击之后,我不希望对话框关闭.但是,似乎只要我们点击AlertDialog上的正/负按钮,它就会一直关闭.
有没有办法阻止对话框点击任何按钮后关闭?
谢谢,
文森特
在Anko的警报构建器中使用positiveButton和negativeButton时,即使dismiss()未调用,它们似乎也会导致关闭对话框.有没有办法在单击按钮后保持对话框打开(如果有除positiveButton/ 之外的类型negativeButton,那也没关系)?
alert {
title = "Add Board"
customView {
....
}
positiveButton("OK") { doSomeFunction() }
negativeButton("Close"){}
}.show()
Run Code Online (Sandbox Code Playgroud) 我想使用自定义对话框进行引脚验证.这是我的代码:
public void fetchUI()
{
add=(Button)findViewById(R.id.pinButton);
add.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
final EditText input = new EditText(MainActivity.this);
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
alert.setView(input);
alert.setTitle("Type Your PIN");
alert.setIcon(R.drawable.ic_launcher);
alert.setMessage("Please Type Your PIN below to Authenticate");
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在我想这样做:如果我用正确的PIN点击OK,那么对话框就会消失.否则,如果我点击OK,它就不会消失.我怎样才能做到这一点?任何帮助将不胜感激.
所以我有以下 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 …Run Code Online (Sandbox Code Playgroud)