Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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
Android Can';t在截击反应方法上开展新活动_Android_Android Volley - Fatal编程技术网

Android Can';t在截击反应方法上开展新活动

Android Can';t在截击反应方法上开展新活动,android,android-volley,Android,Android Volley,我正在开发一个基本的Android登录应用程序,我看过很多YouTube教程,现在我对自己的代码感到困惑(因为我不是专业人士) 当我输入错误的密码时,应用程序将按预期发送消息,但当我根据数据库记录输入正确的密码时,它不会显示任何内容。我不知道如何修理它 我尝试用另一条toast消息替换代码“Intent Intent…”,以查看输入正确密码时是否会出现问题,但即使对于toast消息也没有显示任何内容 public void onResponse(String response) { tr

我正在开发一个基本的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();
    }
}  

当用户名和密码都正确时,它应该启动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);
    
  • 调用截击函数时,将上下文设置为this


  • 代码中的问题出现在
    getApplicationContext()

    试试这个解决方案

  • 在这个截击请求的方法中添加一个上下文参数

    Context context
    
  • 开始这样的活动

    Intent intent = new Intent(context, HomeActivity.class);
    context.startActivity(intent);
    
  • 调用截击函数时,将上下文设置为this


  • 我认为这不是问题所在,正如你在问题中看到的,土司表明密码是否错误。我也尝试过这个解决方案,但它说“无法从静态上下文引用非静态方法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中创建新的活动。