You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android使用Volley向MySQL插入数据时应用崩溃问题

解决Volley上传数据时应用闪退的问题

嘿,我看了你的代码和Logcat日志,立刻就找到了导致应用闪退的核心问题,咱们来一步步修复:

一、直接导致闪退的原因:空指针异常

你在代码里把requestQueue初始化为null了:

final RequestQueue requestQueue = null;

当点击保存按钮调用requestQueue.add(request)时,空对象调用方法直接触发NullPointerException,这就是应用毫无提示闪退的原因。

二、修复步骤

1. 正确初始化RequestQueue

把requestQueue的初始化改成用Volley提供的方法创建实例,而不是设为null:

// 替换原来的null初始化
final RequestQueue requestQueue = Volley.newRequestQueue(this);

2. 完善错误监听与输入校验

另外,建议你给ErrorListener添加日志输出,方便后续排查网络或服务器问题;同时给EditText的输入内容做非空判断,避免上传空字符串:

btnSave.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String firstName = txt1.getText().toString().trim();
        String lastName = txt2.getText().toString().trim();
        
        // 非空校验
        if (firstName.isEmpty() || lastName.isEmpty()) {
            Toast.makeText(Signature.this, "请输入完整姓名", Toast.LENGTH_SHORT).show();
            return;
        }

        StringRequest request = new StringRequest(Request.Method.POST, insertUrl,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        System.out.println(response.toString());
                        Toast.makeText(Signature.this, "保存成功", Toast.LENGTH_SHORT).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        // 添加错误日志,方便排查
                        error.printStackTrace();
                        Toast.makeText(Signature.this, "保存失败:" + error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> parameters = new HashMap<String, String>();
                parameters.put("firstname", firstName);
                parameters.put("lastname", lastName);
                return parameters;
            }
        };
        requestQueue.add(request);
    }
});

三、关于Logcat里的Jackson警告

你Logcat里的Could not find class 'java.beans.Transient'等警告,是Jackson库在低版本Android(Dalvik虚拟机)上的兼容问题,和这次闪退没有关系,暂时不用处理,如果后续涉及JSON解析出现问题再针对性解决即可。


内容的提问来源于stack exchange,提问作者jassim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:41:09