在我的主要活动中:
LoginUser.loginUser(username.getText().toString(),password.getText().toString(), getApplication());
所以在我的LoginUser类中, 我想开始这样一个对话框:
new AlertDialog.Builder(context).set.....
但失败了, 得到这样的错误信息:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
我也想使用
Intent intent = new Intent(context, ABC.class)
context.startActivity(intent);
也失败了。并得到这样的错误信息:
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
我对所有这些感到困惑,任何人都可以帮助我吗?非常感谢你!
答案 0 :(得分:1)
我不完全确定您要做什么,但对于第一个问题,您似乎正在尝试使用非活动上下文来显示对话框。
TL; DR,你不能使用具有应用程序上下文的AlertDialog,它需要一个Activity。 考虑类似的事情:
new AlertDialog.Builder(<activity>)
第二个问题也类似,您可以使用应用程序上下文启动活动,但需要将其作为新任务启动。为此,您需要添加一个标志。 (虽然这不被认为是一种好的做法)
Intent intent = new Intent(context, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
检查here,了解有关Android中各种类型的上下文可以做什么和不能做什么的更多信息。
答案 1 :(得分:0)
试试这个。
LoginUser.loginUser(username.getText().toString(),password.getText().toString(), Mainactivity.this);
将getApllicationcontext()替换为您的Activity。
new AlertDialog.Builder(<activity>)
答案 2 :(得分:0)
你也可以使用它
public void loginUser(Context context){
}
LoginUser.java
{{1}}