我正在开发一个基本的Android登录应用程序,我已经看了很多YouTube教程,现在我对我的代码感到困惑(因为我不是专业人士)。
当我输入错误的密码时,应用程序将按预期发送消息,但是当我根据数据库记录键入正确的密码时,它什么也没有显示。我不知道如何解决它。
我试图用另一条Toast消息替换代码“ Intent intent ...”,以便查看当我输入正确的密码时是否会有东西出现,但是即使Toast消息也没有显示。
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
if (!obj.getBoolean("error")) {
SharedPrefManager.getInstance(getApplicationContext())
.userLogin(
obj.getString("username"),
obj.getString("email")
);
Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
startActivity(intent);
} else {
Toast.makeText(
getApplicationContext(),
obj.getString("message"),
Toast.LENGTH_LONG
).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
当用户名和密码均正确时,它应该启动HomeActiviy。
答案 0 :(得分:0)
我相信您需要从主线程调用startActivity ...
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
if(!obj.getBoolean("error")){
SharedPrefManager.getInstance(getApplicationContext())
.userLogin(
obj.getString("username"),
obj.getString("email")
);
myActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
//Your code to run in GUI thread here
}//public void run() {
Intent intent = new Intent(getApplicationContext(),
HomeActivity.class);
startActivity(intent)
});
}else{
Toast.makeText(
getApplicationContext(),
obj.getString("message"),
Toast.LENGTH_LONG
).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
您的代码中的问题出在getApplicationContext()
中。
尝试此解决方案
在此截击请求的方法中添加上下文参数
Context context
像这样开始活动
Intent intent = new Intent(context, HomeActivity.class);
context.startActivity(intent);
在调用截击函数时将上下文设置为this