在未点击按钮的情况下取消AlertDialog

3

我想关闭AlertDialog窗口,但不是在点击“确定”或“取消”按钮时关闭,而是在调用某个操作时关闭。 实际上,我想在onResume函数中创建对话框,方式如下:

@Override
public void onResume() {
    super.onResume();
    alert = new AlertDialog.Builder(this);
    alert.setTitle("Stay stuck to a tag");
    alert.create().show();
}

当函数被调用时,退出它,例如:

private void dismissMyDiag() {
    alert.dismiss();
}

当然,我已经看到通过 onclick 事件来实现这个的方式,但那不是我想要做的。 有可能实现这样的事吗?如果不行,有哪种对话框可以让我实现这个目标? 谢谢!

是否有AsyncTask或其他类型的后台进程可以调用dismissMyDiag()函数? - eltabo
那个方法是在什么时候被调用的?异步任务还是在主活动中?你有考虑过使用线程吗? - Adnan Mulla
3个回答

7
像这样获取 alertDialog
AlertDialog dialog;
 alert = new AlertDialog.Builder(this);

dialog=alert.create().show();

然后调用。
private void dismissMyDiag() {
    dialog.dismiss();
}

2
谢谢,就是这样!更确切地说,它是像这样的:alert = new AlertDialog.Builder(this); dialog = alert.create(); dialog.show(); - Derbie

1

try this way:

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();
                    }
                });
            }
        });

0

我知道这是一个老问题,但希望这会帮助某些人。 您还可以创建自定义类以用于警报对话框,并在整个项目中访问它。 可以在任何地方显示和隐藏。

package (Your_Pakage_Name);
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatDialogFragment;


public class AlertDailogbox extends AppCompatDialogFragment {

    String Title = null;
    String Msg = null;
    String TAG = "Alert Dialog Box";

    public AlertDailogbox(String title, String msg) {
        Title = title;
        Msg = msg;
        
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(Title)
                .setMessage(Msg)
                .setIcon(R.drawable.ic_alert) //set icon if you want
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        
                    }
                });

        return builder.create();
    }
}

在您的项目(Activity)中调用,创建一个 alertDialog 类的全局变量。
private AlertDailogbox alertDailogbox;

显示对话框的函数

private void showMsgDailog(String Title,String Msg){
    alertDailogbox = new AlertDailogbox(Title,Msg);
    alertDailogbox.setCancelable(false);
    alertDailogbox.show(getSupportFragmentManager(),"alert Dailog");
}

结束循环

if(alertDailogbox != null)
       alertDailogbox.dismiss();

alerDailogeBox 不为空的检查是必要的,否则应用程序可能会崩溃


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接