java如何识别Android崩溃的原因?

u5i3ibmn  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(215)

下面是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;
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题