当前位置: 首页 > 知识库问答 >
问题:

将ResponseListener传递给Request类,获取错误

鄢晔
2023-03-14
package com.fishingtournaments.tournamentapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

public class LoginActivity extends AppCompatActivity {
 TextView ats;
 EditText qrCode_edit;
 Button check_button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    ats = (TextView) findViewById(R.id.text_textView);
    qrCode_edit = (EditText) findViewById(R.id.qrCode_editText);
    check_button = (Button) findViewById(R.id.check_button);


    check_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String qrCode = qrCode_edit.getText().toString();
            //ats.setText(qrCode);
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");

                        if (success){

                            ats.setText("Toks vartotojas yra");

                        }else{
                            ats.setText("Tokio vartotojo nera");

                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            };


            LoginRequest loginRequest;
            loginRequest = new LoginRequest(qrCode, responseListener);
            RequestQueue queue;
            queue = Volley.newRequestQueue(LoginActivity.this);
            queue.add(loginRequest);
        }
    });
}

}
    package com.fishingtournaments.tournamentapp;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.Map;

/**
 * Created by manta on 2017-02-08.
 */

public class LoginRequest extends StringRequest {
    public static String LOGIN_REQUEST_URL = "http://suvalkijossapalas.devpanda.eu/checkQr.php";
    public Map<String, String> params;

    public LoginRequest(String qrcode, Response.Listener<String> listener){
        super(Request.Method.POST, LOGIN_REQUEST_URL, listener, null);
        params.put("qrCode",qrcode);
    }

    public Map<String,String> getParams(){
        return params;
    }

}
                                                                             java.lang.NullPointerException: Attempt to invoke interface method

我认为这个问题可能是:LoginRequest=new LoginRequest(qrCode,responseListener);我认为它崩溃是因为responseListener。如有任何帮助,我将不胜感激

共有1个答案

上官自明
2023-03-14
params.put("qrCode",qrcode);

在这里,params字段等于null。您可以正确地将params字段声明map ,但您从未创建map 的新实例来保存数据。

public LoginRequest(String qrcode, Response.Listener<String> listener){
    super(Request.Method.POST, LOGIN_REQUEST_URL, listener, null);
    params = new Map<String, String();
    params.put("qrCode",qrcode);
}
public static String LOGIN_REQUEST_URL = "http://suvalkijossapalas.devpanda.eu/checkQr.php";
public Map<String, String> params = new Map<String, String>();
 类似资料:
  • 问题内容: 我在MVC框架的View类上有3套。我想在controll类中引用它们。有人可以告诉我这实现了吗?下面是事件控制器。EventView类由addEvent,editEvent,deleteEvent组成,如何在Controller类中为其侦听器。有人可以在Controller类的顶部演示使用示例代码吗? 第二个问题,我只能从类本身更新a ,因此 在View类中具有代码是一种不好的做法,

  • 我正在使用以下技术进行一个投资组合项目:Java、Spring、Hibernate、JavaScript、Thymeleaf和高图。当我试图用JavaScript渲染数据可视化图表时,字符串数组模型在JS中没有得到正确的定义。 这个类生成有问题的数组. transtToJsonArray()被注释掉,因为我正在测试java数组和json数组。 下面是使用Thymeleaf变量渲染的graph.ht

  • 问题内容: 我目前有一个AngularJS ,它基本上是通过调用异步获取的,然后将获取的数据链接到某个范围变量。 代码的恢复版本: 然后,我有一个自定义,它通过一个元素接收那些相同的作用域变量。 代码的恢复版本: 的恢复版本: 问题是,由于是异步的,因此该指令已被严重初始化(例如:未定义)。 尽管找到了一些似乎可以解决此问题的解决方案,但我找不到能为我解决该问题的任何方法。即,我试图观察变量,仅在

  • 问题内容: 我有主片段,我想传递给类,在这里我将在ListView中显示结果。 片段类: 我有资料 现在,我想将“ allStudents”对象发送到新的活动类StudentResult();中。 我在片段类中使用: 在目标类中显示ListView()中的对象; 提前致谢! 问题答案: 在您的Fragment中创建一个自定义界面: 在您的活动中实现此接口: 现在,您必须重写声明的方法(在中): 然

  • 我试图将类名传递给react组件以更改其样式,但似乎无法正常工作: 我试图通过传递具有各自风格的类的名称来改变药丸的风格。我是新来的,所以也许我做得不对。谢啦

  • 问题内容: 是否可以使用反射API将参数传递给Java中的方法? 是否可以使用诸如AspectJ之类的AOP库来实现这一目标? 我在Android上运行。 。 问题答案: 是否可以使用诸如AspectJ之类的AOP库来实现这一目标? 当然可以。这是AspectJ中典型的初学者练习,如下所示: 现在,您只需要编写一个方面即可拦截所有方法执行(以及可选的构造函数执行,如下所示): 运行时,此方面将打印