我一直在开发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。:对于处理计算的更高级技术(例如:进度对话框,多线程)我并不感兴趣。
感谢。
答案 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();
其中dialog
为DialogInterface
。
答案 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);