Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AlertDialog赢得';不显示_Java_Android_Android Alertdialog_Android Context - Fatal编程技术网

Java AlertDialog赢得';不显示

Java AlertDialog赢得';不显示,java,android,android-alertdialog,android-context,Java,Android,Android Alertdialog,Android Context,我试图在代码中显示一个警报对话框。 它需要一个上下文作为其参数进行构建。 我希望它在我的登录活动中弹出: public class LoginActivity extends ActionBarActivity { // Methods inside } 但是我的函数生成了alertDialog,它位于一个单独的类中。因此,为了获得适当的上下文,我尝试了一个额外的类,该类为我提供了ApplicationContext,然后我将

我试图在代码中显示一个警报对话框。 它需要一个
上下文
作为其参数进行构建。 我希望它在我的
登录活动中弹出:

    public class LoginActivity extends ActionBarActivity
    { 
            // Methods inside         
    }
但是我的函数生成了
alertDialog
,它位于一个单独的类中。因此,为了获得适当的
上下文
,我尝试了一个额外的类,该类为我提供了
ApplicationContext
,然后我将其用作所需的参数

这是我的函数,它生成
警报对话框

    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
上下文作为参数传递?

尝试替换此

AlertDialog alertDialog = builder.create();
        alertDialog.show();
用这个

builder.show();
试着换掉这个

AlertDialog alertDialog = builder.create();
        alertDialog.show();
用这个

builder.show();

在alertFailure()中添加另一个参数作为ActivityContext,然后调用
alertFailure(“警报失败”、“警报失败”、LoginActivity.this)来自LoginActivity类。

在alertFailure()中添加另一个参数作为ActivityContext,然后调用
alertFailure(“Alert Failure”、“alerting Failure”、LoginActivity.this)来自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);
 }

您可以重载该方法

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

您需要对话框的活动上下文。应用程序上下文不起作用

您可以将其作为参数传递给方法,例如

public static void alertFailure(Activity context, String errorTitle, String errorMessage){
以及从活动中呼叫:

AnotherClass.alertFailure(this, ...);

您需要对话框的活动上下文。应用程序上下文不起作用

您可以将其作为参数传递给方法,例如

public static void alertFailure(Activity context, String errorTitle, String errorMessage){
以及从活动中呼叫:

AnotherClass.alertFailure(this, ...);

我不认为这是
上下文的问题

按如下方式调用
alertFailure

new Handler().post(new Runnable() {
    @Override
    public void run() {
        alertFailure("Title", "Message");
    }
});

我不认为这是
上下文的问题

按如下方式调用
alertFailure

new Handler().post(new Runnable() {
    @Override
    public void run() {
        alertFailure("Title", "Message");
    }
});


我认为应该将上下文作为参数传递给
alertFailure
只需执行此AlertDialog.Builder=新建AlertDialog.Builder(LoginActivity.this);那么,您得到了什么解决方案了吗?我认为您应该将上下文作为参数传递给
alertFailure
。在MyApplication中,尝试这样分配上下文:
MyApplication.Context=this只需执行此AlertDialog.Builder=新建AlertDialog.Builder(LoginActivity.this);那么,当我使用“LoginActivity.this”时,你得到了什么解决方案了吗?它表明该活动不是一个封闭类。你是从静态方法调用它的吗?是的,我的函数被定义为静态的,那么你没有访问外部环境的权限所以如果我将其公开并创建一个对象来使用我的方法,它应该可以正常工作?当我使用“LoginActivity.this”时,它表明该活动不是一个封闭类。你是从静态方法调用它吗?是的,我的函数定义为静态,那么你没有访问外部环境的权限。因此,如果我将其公开并创建一个使用我的方法的对象,它应该可以正常工作?