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

Android绘制JSON折线图出现NullPointerException,新手求助

解决你的Android折线图NPE及JSON解析问题

嘿,别慌,我帮你找到了两个核心问题,咱们一步步来搞定:

1. 解决AppController的NullPointerException

错误日志里明确指出AppController.getInstance()返回了null,这是因为你没有在AndroidManifest.xml中注册自定义的Application类——Volley的请求队列依赖这个类完成初始化,所以必须补上这一步:

打开你的AndroidManifest.xml,在<application>标签中添加android:name=".AppController",示例如下:

<application
    android:name=".AppController"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <!-- 你的Activity等原有内容 -->
</application>

2. 修复JSON解析的逻辑错误

即使解决了NPE,你的JSON解析代码也会出错——循环遍历数组时,你错误地使用了外层的jsonObject,而没有去获取数组里的每个子对象。同时注意你的JSON中Estimate是浮点值(比如25.4),用getInt()会抛出类型转换异常,要改用getFloat()。

修改drawChart()方法里的循环部分:

错误代码:

for (int i = 0; i < jsonArray.length(); i++) {
    int Estimate = jsonObject.getInt("Estimate");
    String Date = jsonObject.getString("Date");
    x.add(new Entry(Estimate, i));
    y.add(Date);
}

替换为正确的解析逻辑:

for (int i = 0; i < jsonArray.length(); i++) {
    // 获取数组中的单个子对象
    JSONObject coffeeItem = jsonArray.getJSONObject(i);
    // 从子对象中读取对应字段
    float estimateValue = coffeeItem.getFloat("Estimate");
    String timeStr = coffeeItem.getString("Date");
    x.add(new Entry(estimateValue, i));
    y.add(timeStr);
}

3. 额外的小优化建议

  • 确认你已经在build.gradle(Module level)中添加了必要的依赖:
// Volley网络请求库
implementation 'com.android.volley:volley:1.2.1'
// MPAndroidChart图表库
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
  • 你当前的RetryPolicy设置了超时为0,这会导致请求直接失败,建议改成合理配置:
strReq.setRetryPolicy(new DefaultRetryPolicy(
        5000, // 超时时间5秒
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
));

完成这些修改后,重新运行App,应该就能正常加载JSON数据并绘制折线图了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:33:11