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

我正在尝试创建一个onclicklistener,它将从另一个类调用函数

施誉
2023-03-14

然后,该函数将使用API将一个json对象发送到数据库中,但似乎Volley.new请求队列(this);是一个空值。java.lang.NullPointerExcture:尝试在com.example.kevin.barcodescanner.addToCart.jsonParse的空对象引用上调用虚拟方法com.android.volley.请求com.android.volley.请求ueue.add(com.android.volley.请求)(addToCart.java:59)com.example.kevin.barcodescanner.Main活动$2.on单击(Main Activity.java:49)android.view.View.perform单击(View.java:6597)android.view.View.perform点击内部(View.java:6574)在android.view.View.访问3100美元(View. java: 778)在android. view。在android. os上查看$PerformClick. run(View. java: 25885)。Handler. handleCallback(Handler. java: 873)在android. os.在android. os.在android. app.ActivityThread. main(ActivityThread. java: 6669)在java. lang.反射。方法调用(本机方法)在com. android. interal. os。RuntimeInit$method odAndArgsCaller. run(RuntimeInit. java: 493)在com. android. interal. os。ZygoteInit. main(ZygoteInit. java: 858)

公共类MainActivity扩展了AppCompatActivity{

public static TextView resultTextView;
Button scan_btn, add_btn;

AddToCart add = new AddToCart();


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


    resultTextView = (TextView)findViewById(R.id.result_text);
    scan_btn = (Button)findViewById(R.id.btn_scan);
    add_btn =(Button)findViewById(R.id.add_btn);



    scan_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(getApplicationContext(), ScanCodeActivity.class));
        }
    });

    add_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            add.jsonParse();
        }
    });
}

}

公共类AddToCart扩展了AppCompatActivity{

private RequestQueue mQueue;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mQueue = Volley.newRequestQueue(this);
}

public void jsonParse() {

    JSONObject json = new JSONObject();
    try {

        json.put("id","11111111111");
        json.put("name","222222222222");
        json.put("price","1");

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


    String url = "https://fg3qzgb2va.asdasdasdasdas-api.ap-southeast-1.amazonaws.com/sample";
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, json,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    System.out.print("String Response : "+ response.toString());
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });
    jsonObjectRequest.html" target="_blank">setTag("VACTIVITY");
    mQueue.add(jsonObjectRequest);
}

}

共有1个答案

郏志诚
2023-03-14

因为AddToCart并不是一个真正的活动,所以oncreate方法从未真正被调用过,因为并没有什么可显示的。更好的解决方案是通过构造函数将上下文从MainActivity解析到AddToCart,并在构造函数中实例化queu

public class AddToCart  {
private RequestQueue mQueue;
   public AddToCart(Context context) {
        super.onCreate(savedInstanceState);
        mQueue = Volley.newRequestQueue(context);
    }

    public void jsonParse() {

        JSONObject json = new JSONObject();
        try {

            json.put("id","11111111111");
            json.put("name","222222222222");
            json.put("price","1");

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


        String url = "https://fg3qzgb2va.asdasdasdasdas-api.ap-southeast-1.amazonaws.com/sample";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, json,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        System.out.print("String Response : "+ response.toString());
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        jsonObjectRequest.setTag("VACTIVITY");
        mQueue.add(jsonObjectRequest);
    }
}
 类似资料:
  • 我正在尝试编写代码,将一行添加到。我打字,但什么也没显示。我的也有一个错误。 有人知道我怎么重写代码吗?

  • 你好,我尝试在ant中创建一个构建,如果它创建一个html报告,它将从eclips启动我的.class文件 “ “ 生成失败D:\Automation\Eclipse\MyWork\OpenCart\BUILD.xml:23:编译失败;有关详细信息,请参阅编译器错误输出。 总时间:1秒 ${lib}包含用于创建该类的所有库,并且只运行该类可以100%工作,但是当我试图在eclips中作为ant构建

  • 我编码了一个小脚本来制作一个小动画,但是当我在div上非常快地移动光标10次时,div也移动了10次。我做了一个全局var和一个if查询,但它不起作用。 代码: animon()函数被限定在onmouseover事件上,而animoff()函数被限定在onmouseout事件上。工作布尔值会检查div容器是否被移动。

  • 问题内容: 我无法从另一个类Menu.swift调用GameViewController.swift中的函数。我这样调用该函数: 这是我要调用的函数: } 我在菜单类内的GameViewController.showLeaderboard()行中出现编译器错误“调用中的参数#1缺少参数”,但我不理解编译器期望的参数类型,因为我不需要任何声明就声明了该函数参数。 谢谢 问题答案: 在您定义为方法而不

  • 我正在尝试创建一个21点模拟器。在向玩家和庄家发牌之前,我需要洗牌。是一个无效函数,是类中的卡类型。职业存储从职业中发出的牌。在游戏开始时,我需要向玩家和庄家发两张牌。当我尝试在类访问 的成员函数时,我收到错误消息“调用不带对象参数的非静态成员函数”。调用成员函数的正确方法是什么?我真的对语法感到困惑。