如何在没有用户交互的情况下从活动关闭警报对话

时间:2015-09-04 12:49:43

标签: android android-activity android-alertdialog

在我的Android应用程序中,我创建了一个用于处理常规功能的公共类,例如显示警告对话框,操作日期函数。我显示警告对话框只是通过传递文本消息调用方法。我的问题是如何以编程方式关闭另一个类中的警告对话框?

我的代码流程:

UtillClass2是一个在应用程序中使用common methods的类。

public class UtillClass2 {
    public static void showAlert(Context context, String str) {
        final Dialog dialog = new Dialog(context,
                android.R.style.Theme_Translucent_NoTitleBar);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.common_alert);
        dialog.setCancelable(true);
        Button ok = (Button) dialog.findViewById(R.id.common_button);
        TextView alerttxt = (TextView) dialog.findViewById(R.id.common_text1);
        alerttxt.setText(str);
        ok.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        dialog.show();
    }
} 

我通过这样调用

来调用Activity的警告对话框
        UtillClass2.showAlert(QNowActivity.this, getResources()
                .getString(R.string.available_err));

我的问题是我想通过编程方式从活动中关闭警报对话框吗?

4 个答案:

答案 0 :(得分:0)

创建对话框实例的全局实例,如下所示:

private Dialog mDialog; // global class variable .

使用mDialog.dismiss();

关闭对话框

答案 1 :(得分:0)

请尝试以下代码,我认为它对您有所帮助。

public class UtilDialog {
public final static int ALERT_DIALOG = 1;

Context context;
AlertDialog alertDialog;

public UtilDialog(Context context) {
    this.context = context;
    Resources resources = context.getResources();
    alertDialog = new AlertDialog.Builder(context).create();
    alertDialog.setTitle(resources.getString(R.string.message));
    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE,
            resources.getString(R.string.ok),
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            });

}

public void showDialog(String message, int dialogCode) {
    switch (dialogCode) {
    case ALERT_DIALOG:
        alertDialog.setMessage(message);
        alertDialog.show();
        break;
    }

}

public void dismissDialog(int dialogCode) {
    switch (dialogCode) {
    case ALERT_DIALOG:
        alertDialog.dismiss();
        break;
    }
}

}

并在另一个班级

中使用此警报拨号
 UtilDialog utilDialog=new UtilDialog(this);

utilDialog.showDialog(
                    getResources().getString(R.string.all_fields),
                    UtilDialog.ALERT_DIALOG);
utilDialog.dismissDialog(UtilDialog.ALERT_DIALOG);

答案 2 :(得分:0)

public class UtillClass2 {

Dialog dialog;

public static void showAlert(Context context, String str) {
    dialog = new Dialog(context,
            android.R.style.Theme_Translucent_NoTitleBar);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.common_alert);
    dialog.setCancelable(true);
    Button ok = (Button) dialog.findViewById(R.id.common_button);
    TextView alerttxt = (TextView) dialog.findViewById(R.id.common_text1);
    alerttxt.setText(str);
    ok.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
    dialog.show();
}

public static void hideAlert()
{
    if(dialog != null)
    {
        dialog.dismiss();
    }
}
} 

答案 3 :(得分:0)

如果您这样显示对话框:

EnterPinDialog enterPinDialog = EnterPinDialog.newInstance(...);
enterPinDialog.show(getSupportFragmentManager(), EnterPinDialog.TAG);

然后您可以像这样关闭它:

Fragment fragment = getSupportFragmentManager().findFragmentByTag(EnterPinDialog.TAG);
if (fragment != null && fragment instanceof EnterPinDialog) {
    EnterPinDialog enterPinDialog = (EnterPinDialog)fragment;
    enterPinDialog.dismiss();
    //enterPinDialog.dismissAllowingStateLoss();
}
相关问题