java - 警报对话框不会显示

标签 java android android-alertdialog android-context

我正在尝试在我的代码中显示警报对话框。 当它作为参数构建时,它需要一个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 没有弹出。如何将我的 LoginActivityContext 作为参数传递?

最佳答案

您可以重载该方法

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/

相关文章:

java - 访问Android 5.1隐藏API

java - JSON文件有很多元素,如何使用java读取和打印?

android - 如何在android中的 fragment 布局中的按钮单击事件上动态添加textview

android - 使用 Dagger 2 注入(inject) ViewModel 并试图理解为什么 @Binds 不起作用,而 @Provides 起作用

android - 操作栏列表导航 + 选项卡导航 - 微调器的位置不在最左边

Android - AlertDialog 样式

java - 选中复选框后仅显示一次对话框

java - 处理多个窗口中的事件

java - android中警报框上的倒数计时器

java - 下载照片时遇到问题