java - JSONArray 需要更高的 API 级别,但在同一类中使用没有问题
问题描述
这是我在 Android Studio 中反复出现的问题。我将使用 JSONArray 类,它会告诉我“调用需要 API 级别 19(当前最小值为 15)”。奇怪的是,我可以在同一个班级的其他地方使用 JSONArray。
我尝试过的一些事情是清理和构建项目(什么都不做),重新启动 Android Studio(也没有解决这个问题),重写使用 JSONArray 的方法,或者移动它(这有时会起作用)
这是一个我没有得到问题的例子
private void makeApiCall(String text) {
APICall.make(context, text, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
List<Employee> employees = new ArrayList<>();
try {
JSONArray array = new JSONArray(response);
employees = new APIHelper().populateEmployeetList(array);
} catch (Exception e) {
e.printStackTrace();
}
autoAdapter.setData(employees);
autoAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
}
这是一个我得到错误的例子
private void getJobs(String text){
APICall.getJobsByPartial(context, text, new Response.Listener() {
@Override
public void onResponse(Object response) {
try{
List<Function> functions = new ArrayList<>();
JSONArray jobs = new JSONArray(response);
functions = new APIHelper().populateFunctionList(jobs);
jobAdapter.setData(functions);
jobAdapter.notifyDataSetChanged();
}
catch (JSONException ex){
ex.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
}
解决方案
在您的第一个代码段中,response
是一个String
. 接受 a的JSONArray
构造函数String
从 API 级别 1 开始就已经存在。
在您的第二个代码片段中,response
是一个Object
. 接受 an的JSONArray
构造函数Object
从 API 级别 19 开始才出现。
在您的第二个代码片段中,APICall.getJobsByPartial()
应该为您的回调提供比Object
.
推荐阅读
- flutter - 有没有办法在颤动中预缓存 Lottie 动画?
- java - JTable没有在第一个单元格上添加值
- python - Python 使用带有循环处理时间和日期时间的类不会重置计时器
- bash - 如何通过bash脚本从最后到第一个对linux中的数据进行排序
- windows - 主题字体或符号无法在 Windows 终端中正常工作
- java - Selenium 第一个脚本问题
- c# - 与相关表连接时,Linq 查询返回 0 个计数
- python - 图神经网络中的梯度爆炸问题
- android - 无法将 git 存储库解析为 android gradle 中的依赖项
- c - C中的变量值问题(大量数字)