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

问题描述:

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

而且我通过调用这样

 UtillClass2.showAlert(QNowActivity.this, getResources() 
       .getString(R.string.available_err)); 

我的问题叫从我Activity警告对话框是我想通过编程方式从活动到关闭警告对话框?

+0

你应该返还对话框,因为你怎么在创建后它可以访问它使用此警报dialgon? – tyczj

+0

你可以请将applicationcontext传递给对话框 –

科瑞您的对话实例的全局实例如下图所示:

private Dialog mDialog; // global class variable . 

关闭该对话框与mDialog.dismiss();

请尝试下面的代码,我瘦是对你有帮助。

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

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