0

我需要的是显示信息但什么也不做。我试过用“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
}
}
});
4

3 回答 3

0

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

您可以将 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();
            }
        });
    }
});

代码从上面的链接复制以供参考。

于 2013-05-24T09:44:27.770 回答
0

你的具体要求是什么。从条件:

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

根据上述情况,我了解您仅在选择的选项少于最小值的情况下才尝试取消“确定”按钮。

与其取消,不如将 OK 按钮的“isEnabled()”参数设置为 false。当且仅当有最少的选择时,确定按钮才可见。说:

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
 }
 });
于 2013-05-24T09:47:23.937 回答
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);
}

我希望这能帮到您。

于 2013-05-24T09:48:07.630 回答