Android Can';t在截击反应方法上开展新活动
我正在开发一个基本的Android登录应用程序,我看过很多YouTube教程,现在我对自己的代码感到困惑(因为我不是专业人士) 当我输入错误的密码时,应用程序将按预期发送消息,但当我根据数据库记录输入正确的密码时,它不会显示任何内容。我不知道如何修理它 我尝试用另一条toast消息替换代码“Intent Intent…”,以查看输入正确密码时是否会出现问题,但即使对于toast消息也没有显示任何内容Android Can';t在截击反应方法上开展新活动,android,android-volley,Android,Android Volley,我正在开发一个基本的Android登录应用程序,我看过很多YouTube教程,现在我对自己的代码感到困惑(因为我不是专业人士) 当我输入错误的密码时,应用程序将按预期发送消息,但当我根据数据库记录输入正确的密码时,它不会显示任何内容。我不知道如何修理它 我尝试用另一条toast消息替换代码“Intent Intent…”,以查看输入正确密码时是否会出现问题,但即使对于toast消息也没有显示任何内容 public void onResponse(String response) { tr
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();
}
}
当用户名和密码都正确时,它应该启动HomeActivity。你需要从主线程调用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();
}
}
我相信,你需要从主线程调用你的StartTactivity
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();
}
}
代码中的问题出现在
getApplicationContext()
中
试试这个解决方案
Context context
Intent intent = new Intent(context, HomeActivity.class);
context.startActivity(intent);
代码中的问题出现在
getApplicationContext()
中
试试这个解决方案
Context context
Intent intent = new Intent(context, HomeActivity.class);
context.startActivity(intent);
我认为这不是问题所在,正如你在问题中看到的,土司表明密码是否错误。我也尝试过这个解决方案,但它说“无法从静态上下文引用非静态方法runOnUiThread。Agh android对我来说似乎有点复杂。你是否检查了JSONObject obj的内容以验证“error”布尔值是否真的为假?我不知道,实际上我遵循了这个youtube的方法,但我不能得到相同的结果,真的混淆了非静态方法rununuithread message,你是否在没有myActivity的情况下尝试过它?我使用的就是普通的rununuithread(new Runnable()…这是什么类型的类?它运行在什么类型的类中?一个活动、片段或其他东西?我认为这不是问题所在,因为你可以从Toast显示密码是否错误的问题中读到。我也尝试过这个解决方案,但它说"非静态方法runOnUiThread无法从静态上下文引用。Agh android对我来说似乎有点复杂。你检查过JSONObject obj的内容以验证“error”布尔值是否为false吗?我不知道,实际上我遵循这个youtube的方法,但我无法得到相同的结果,真的对非静态方法感到困惑thod rununuithread消息,您是否在没有myActivity的情况下尝试过它。?只需普通的rununuithread(new Runnable())…这就是我使用的。它运行在什么类型的类中?一个活动、片段或其他什么?啊,对不起,我不太明白我在第3步要做什么,请你解释一下,非常感谢。当你在活动中调用请求函数时,你必须设置上下文变量。假设你的函数签名是像这样的
public void myRequest(上下文上下文,字符串名,…)
。所以在您的活动中,您可以像这样调用这个函数myRequest(这个“xxxxx”,…)
事实上,我使用PHP连接mysql,我的PHP脚本是否可能出了问题,因此,我无法在android中创建新的活动。啊,对不起,我不太明白我在第3步要做什么,请你解释一下,非常感谢。当你在活动中调用请求函数时,你必须设置context变量。假设您的函数签名是这样的public void myRequest(上下文、字符串名称…)
。因此在您的活动中,您可以像这样调用此函数myRequest(这是“xxxxx”、…)
事实上,我使用PHP连接mysql,我的PHP脚本是否可能出了问题,因此,我无法在android中创建新的活动。