如何在android中禁用警报框中的ok按钮

如何在android中禁用警报框中的ok按钮,android,android-alertdialog,Android,Android Alertdialog,在我的应用程序中,我将显示一个带有消息和ok按钮的警报框。在后台,我点击了一些api并将其保存到数据库中(我在异步任务中完成)。我的要求是我想禁用ok按钮,直到后台处理完成。后台处理完成后,我需要启用警报框中的ok按钮 我的警报框创建代码: helpBuilder1 = new AlertDialog.Builder(Home.this); helpBuilder1.setTitle("Welcome"); helpBuilder1.setMessage("Thank y

在我的应用程序中,我将显示一个带有消息和ok按钮的警报框。在后台,我点击了一些api并将其保存到数据库中(我在异步任务中完成)。我的要求是我想禁用ok按钮,直到后台处理完成。后台处理完成后,我需要启用警报框中的ok按钮

我的警报框创建代码:

    helpBuilder1 = new AlertDialog.Builder(Home.this);
    helpBuilder1.setTitle("Welcome");
    helpBuilder1.setMessage("Thank you for waiting while App Installs");

    mOkButton = helpDialog1.getButton(AlertDialog.BUTTON_POSITIVE);
    mOkButton.setEnabled(false);

    if(mOkButton.isEnabled()==false){
        Log.e("Home.java - ShowPopUp", "button is disablled");
        new First_Time_Sync().execute();
    }

    mOkButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            helpDialog1.dismiss();
            showSilde_show_PopUp();

        }
    });

    helpDialog1 = helpBuilder1.create();
    helpDialog1.show(); 
请帮助我。

使用AlertDialog上的getButton()来获取底层的ok按钮

Button mOkButton = helpDialog1.getButton();
mOkButton.setEnabled(false)`

不幸的是,似乎没有直接的API方法。然而,这是我对更多自定义解决方案的想法:[键入时更新:Rajdeeps解决方案听起来合理,请先尝试;-)如果没有帮助,请尝试此解决方案。]

使用按钮创建自定义AlertDialog布局,并使用将其添加到AlertDialog

LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.yourlayout,(ViewGroup) findViewById(R.id.yourLayoutsOuterLinearLayout));
builder.setView(view);
布局可以如下所示:

<LinearLayout
  android:id="@+id/yourLayoutsOuterLinearLayout"
  android:layout_height:...>
  <Button
    android:id="@+id/myButton"
    android:...>
  </Button>
</LinearLayout>


它是否必须是一个AlertDialog?为什么不作为ProgressDialog实现呢?为什么必须存在OK按钮?我必须禁用OK按钮,直到后台进程完成。启用ok按钮后,用户将与应用程序交互。我需要把它放在警报箱里。请帮助我。相反,我更喜欢显示进度条,一旦你们完成下载过程,只需用“确定”按钮显示警报框。我确信这一次是最佳实践,而不是您之前的评论;setEnabled(false)位于helpDialog1=helpBuilder1.create()上方;但是helpDialog1=helpBuilder1.create();是在按钮之前MOKBUTON是不显示按钮的。请更新有问题的xml。