下面是android应用程序firebase崩溃堆栈跟踪,我无法确定崩溃的原因。这可能是一个愚蠢的问题,但这个崩溃计数是尖峰,我需要一个修复。这==null的确切含义是什么?
致命异常:java.lang.nullpointerexception:this==null位于com.pure.indosat.care.fragments.buy.buypackagesfragment.lambda$parsepackagescategories$1(buypackagesfragment.java:175)位于com.pure.indosat.care.fragments.buy.buy.BuyPackagesFragments.lambda$parsepackagescategories$1$buypackagesfragment(buypackagesfragment.java:11)com.pure.indosat.care.fragments.buy.-$$lambda$buypackagesfragment$ccyvvivqjqdnzlemw30nw6ekmqa.run(-.java:11)在android.os.handler.handle.handlecallback(handler.java:883)在android.os.looper.loop(looper.java:237)在android.app.activitythread.main(activitythread.java:7948)在java.lang.reflect.method.invoke(method.java)位于com.android.internal.os.runtimeinit$methodandargscaller.run(runtimeinit.java:493)位于com.android.internal.os.zygoteinit.main(zygoteinit.java:1075)
在测试buypackagesfragment java类时,我没有遇到任何崩溃。以下代码是根据crash第175行的代码
私有void parsepackagescategories(jsonobject jsonobject){
Handler handler = new Handler();
handler.post(() -> {
Iterator<String> keys = jsonObject.keys();
tabs.clear();
while (keys.hasNext()) {
String key = keys.next();
if (jsonObject.opt(key) instanceof JSONObject) {
JSONObject jsonObject1 = (JSONObject) jsonObject.opt(key);
if (jsonObject1 != null) {
String title = jsonObject1.optString("title");
JSONArray jsonArray = jsonObject1.optJSONArray("categories");
TabInfo item = new TabInfo();
**Line No: 175 : JSONArray categoriesArray = mActivity.getJSONArray(jsonObject1, "categories");**
try {
String id = categoriesArray.length() > 0
? categoriesArray.getJSONObject(0).optString("category_id")
: "";
item.setId(id);
} catch (JSONException e) {
TraceUtils.logException(e);
}
item.setTitle(title);
item.setData(jsonArray);
item.setOrder(jsonObject1.optInt("order"));
tabs.add(item);
}
}
}
Collections.sort(tabs, (z1, z2) -> {
if (z1.getOrder() > z2.getOrder())
return 1;
else if (z1.getOrder() < z2.getOrder())
return -1;
return 0;
});
parseTabsData();
});
}
在这里,我认为“mactivity”可能是空的,但如果是这样的话,那么崩溃应该在代码开始时发生。
如果有人能告诉我this==null的确切含义,那么它将非常有用。
非常感谢。
public JSONArray getJSONArray(JSONObject jsonObject, String key) {
JSONArray jsonArray = new JSONArray();
if (jsonObject == null || TextUtils.isEmpty(key)) return jsonArray;
try {
if (jsonObject.opt(key) instanceof JSONObject) {
jsonArray.put(jsonObject.optJSONObject(key));
return jsonArray;
}
if (jsonObject.opt(key) instanceof JSONArray) {
jsonArray = jsonObject.optJSONArray(key);
return jsonArray;
}
} catch (Exception e) {
TraceUtils.logException(e);
}
return jsonArray;
}
暂无答案!
目前还没有任何答案,快来回答吧!