我试图在代码中显示一个警告对话框。
构建时需要一个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
没有弹出。如何传递Context
的LoginActivity
作为参数? 最佳答案
您可以重载该方法
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);
}