我正在尝试在我的代码中显示警报对话框。
当它作为参数构建时,它需要一个Context
。
我希望它在我的 LoginActivity
中弹出:
public class LoginActivity extends ActionBarActivity
{
// Methods inside
}
但是我生成 alertDialog
的函数位于一个单独的类中。因此,为了获得适当的Context
,我尝试了一个额外的类,它为我提供了ApplicationContext
,然后我将其用作所需的参数。
这是我生成alertDialog
的函数:
public static void alertFailure(String errorTitle, String errorMessage){
Log.d("Alert Failure", "alerting failure");
AlertDialog.Builder builder = new AlertDialog.Builder(MyApplication.getAppContext()); // Needs context of loginactivity
builder.setTitle(errorTitle);
builder.setMessage(errorMessage);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
这是我用来获取 ApplicationContext
的类:
public class MyApplication extends Application{
private static Context context;
public void onCreate(){
super.onCreate();
MyApplication.context = getApplicationContext();
}
public static Context getAppContext(){
return context;
}
}
当我登录程序时,我可以看到我的函数运行良好,但 alertDialog
没有弹出。如何将我的 LoginActivity
的 Context
作为参数传递?
最佳答案
您可以重载该方法
public static void alertFailure(Context context, String errorTitle, String errorMessage) {
Log.d("Alert Failure", "alerting failure");
AlertDialog.Builder builder = new AlertDialog.Builder(context); // Needs context of loginactivity
builder.setTitle(errorTitle);
builder.setMessage(errorMessage);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
并像这样调用它 NomeClass.alertFailure(LoginActivity.this, "title", "message");
您可以保留没有上下文的版本:
public static void alertFailure(String errorTitle, String errorMessage){
alertFailure(MyApplication.getContext(), erroTitle, errorMessage);
}
关于java - 警报对话框不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29233227/