1

行。在有人指出我这是重复的之前,我知道它已经被问过很多次了。但我不能采纳这些问题中给出的任何答案。我在一个函数中有一个警报对话框,在用户在警报对话框中做出选择后,它必须返回一个布尔值。我无法修改 onclick 中的布尔值,因为我有一个依赖于该函数返回值的二进制文件。任何人都可以给我关于如何做到这一点的任何想法吗?

public static boolean allow(){
AlertDialog.Builder builder = new AlertDialog.Builder(act);
        builder.setIcon(R.drawable.ic_launcher);
        builder.setTitle("Title");
        builder.setCancelable(false);
        builder.setView(text);
        builder.setPositiveButton("Allow", new OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                result = true;

                if (checked) {
                    p.addapp(pkgname, applicationName, 1, byte);
                }

                dialog.dismiss();

                act.finish();

            }
        });

        builder.setNegativeButton("Deny", new OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                result = false;
                if (checked) {
                    p.addapp(pkgname, applicationName, 2, byte);
                }
                dialog.dismiss();
                act.finish();
            }
        });
        AlertDialog dlg = builder.create();
        dlg.show(); 
    }
    return result;
}

到目前为止,我已经尝试异步执行此操作,为对话框创建一个新活动并使用 startActivityForResult() 实例化它。还尝试放置 wait(),notify() 但不起作用。我希望我能尽快得到解决方案。

4

1 回答 1

0

这很简单。不要在函数 allow() 中返回选择布尔值。在 Dialog onClick 事件之后返回布尔值并评估它们。

你不能这样做吗?

void okay() {
    // place code here
    if (checked) {
        p.addapp(pkgname, applicationName, 1, byte);
    }
}    

void cancel() {
    // place code here
    if (checked) {
        p.addapp(pkgname, applicationName, 2, byte);
    }
}

public static void allow(){
AlertDialog.Builder builder = new AlertDialog.Builder(act);
    builder.setIcon(R.drawable.ic_launcher);
    builder.setTitle("Title");
    builder.setCancelable(false);
    builder.setView(text);
    builder.setPositiveButton("Allow", new OnClickListener() {
        public void onClick(DialogInterface dialog, int arg1) {

            okay();

            dialog.dismiss();

            act.finish();

        }
    });

    builder.setNegativeButton("Deny", new OnClickListener() {
        public void onClick(DialogInterface dialog, int arg1) {

            cancel();

            dialog.dismiss();
            act.finish();
        }
    });
    AlertDialog dlg = builder.create();
    dlg.show(); 
}
}
于 2013-10-06T06:00:05.857 回答