在我的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));
我的问题是我想通过编程方式从活动中关闭警报对话框吗?
答案 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();
}