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”时,它表明该活动不是一个封闭类。你是从静态方法调用它吗?是的,我的函数定义为静态,那么你没有访问外部环境的权限。因此,如果我将其公开并创建一个使用我的方法的对象,它应该可以正常工作?