按下AlertDialog按钮取消

时间:2013-05-24 09:38:03

标签: android android-alertdialog

我需要的是显示消息但什么都不做。我试过“break”和“return true / false”。有什么建议吗?我的代码是:

builder.setPositiveButton("OK", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
    if(chosenCat.size() < 2){
        Toast.makeText(getApplicationContext(), "Min 2 categories to compare.", Toast.LENGTH_SHORT).show();
        //...needs to abort OK button like nothing pressed
    } else {
        //...do some stuff
}
}
});

3 个答案:

答案 0 :(得分:0)

要在按下其中一个按钮后打开对话框,请参阅此post

您可以将一个onShowListener添加到AlertDialog,然后您可以覆盖该按钮的onClickListener。

final AlertDialog d = new AlertDialog.Builder(context)
        .setView(v)
        .setTitle(R.string.my_title)
        .setPositiveButton(android.R.string.ok,
                new Dialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface d, int which) {
                        //Do nothing here. We override the onclick
                    }
                })
        .setNegativeButton(android.R.string.cancel, null)
        .create();

d.setOnShowListener(new DialogInterface.OnShowListener() {

    @Override
    public void onShow(DialogInterface dialog) {

        Button b = d.getButton(AlertDialog.BUTTON_POSITIVE);
        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // TODO Do something

                //Dismiss once everything is OK.
                d.dismiss();
            }
        });
    }
});

从上述链接转载的代码供参考。

答案 1 :(得分:0)

您的具体要求是什么?从条件:

    if(chosenCat.size() < 2){
    Toast.makeText(getApplicationContext(), "Min 2 categories to compare.", Toast.LENGTH_SHORT).show();

从上述条件我知道你只是在选择的选项少于最小值时才试图取消确定按钮。

为什么不将OK按钮的“isEnabled()”参数设置为false,而不是取消。当且仅当有最小选择时,OK按钮才可见。说:

if(chosenCat.size()<2){
   button1.isEnabled()="false";
Toast.makeText(getApplicationContext(), "Select minimum 2 options", Toast.LENGTH_SHORT).show();
else {
builder.setPositiveButton("OK", new OnClickListener() 
{
       //DO SOMETHING
 }
 });

答案 2 :(得分:0)

尝试使用dialog.getButton(Dialog.BUTTON1).setEnabled(false);

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setPositiveButton("OK", new OnClickListener() {
    public void onClick(DialogInterface arg0, int arg1) {
        if(chosenCat.size() < 2){
        Toast.makeText(getApplicationContext(),"Min 2 categories to compare.", Toast.LENGTH_SHORT).show();
        }
}
});

在此之后创建创建对话框,如下所示

AlertDialog dialog = builder.create();
dialog.show();

致电show()后 检查你的病情

if(chosenCat.size() < 2){
    dialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false);
}

我希望这会对你有所帮助。