Android警报对话框 - 按下后如何隐藏“确定”按钮

时间:2010-11-27 12:04:41

标签: android alertdialog

我一直在开发Android应用。

我想在用户按下OK按钮后隐藏它,因为对话窗口会在计算发生时保持在前景几秒钟。

这是代码:

    new AlertDialog.Builder(this)
    .setMessage("This may take a while")
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {                
        @Override
        public void onClick(DialogInterface dialog, int which) {
                       // hide the OK button - how?
                       // a lot of computation
        }
    })
    .show(); 

我怎样才能做到这一点?

P.S。:对于处理计算的更高级技术(例如:进度对话框,多线程)我并不感兴趣。

感谢。

4 个答案:

答案 0 :(得分:20)

.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
         ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE);
         // the rest of your stuff
    }
})

答案 1 :(得分:1)

setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        dialog.dismiss();

其中dialogDialogInterface

答案 2 :(得分:0)

对于试图禁用AlertDialog上“肯定”按钮的其他任何人,这些解决方案中的许多似乎现在都行不通-调用{{ 1}}在create上,它只会返回null。

所以应该在AlertDialog.Builder中找到一个地方,所以我使它工作的方式是这样的:

onResume

那样,只要片段运行,您就应该有一个可用的引用,因此只要需要禁用它就可以调用var positiveButton: Button? = null override fun onResume() { super.onResume() if (positiveButton == null) { positiveButton = (dialog as AlertDialog).getButton(AlertDialog.BUTTON_POSITIVE) } }

请小心您的状态,重新创建的片段可能带有某些复选框或其他复选框,但尚没有该positiveButton.isEnabled = false引用,它将在{{1}中重新运行该代码}。因此,如果您需要进行任何初始化(例如在用户选择选项之前禁用按钮),请确保调用一个检查当前状态并确定是否应启用按钮的函数。不要以为它只是空白!

答案 3 :(得分:-3)

您可以将按钮的可见性设置为不可见。

ok.setVisibility(View.INVISIBLE);