简体   繁体   English

应用程序在更高版本的Android上崩溃

[英]App crashes on higher versions of android

I have been creating an app, built on target sdk version 15 and with minimum sdk version of 8. Every thing is running perfect when I run it on a devices running version 8. But when I try it on anything higher than version 10 it crashes with a NullPointerException. 我一直在创建一个应用程序,基于目标sdk版本15,最小sdk版本为8.当我在运行版本8的设备上运行它时,每个东西都运行得很完美。但是当我在高于版本10的任何东西上尝试它时它会崩溃使用NullPointerException。

The logcat gives me this: logcat给了我这个:

10-06 19:23:12.927: E/AndroidRuntime(589): FATAL EXCEPTION: main
10-06 19:23:12.927: E/AndroidRuntime(589): java.lang.RuntimeException: Unable to start                 activity        ComponentInfo{com.fansheroid.facts.chicks/com.fansheroid.facts.chicks.MainActivity}:   java.lang.NullPointerException
10-06 19:23:12.927: E/AndroidRuntime(589):  at     android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.os.Looper.loop(Looper.java:137)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.ActivityThread.main(ActivityThread.java:4340)
10-06 19:23:12.927: E/AndroidRuntime(589):  at java.lang.reflect.Method.invokeNative(Native Method)
10-06 19:23:12.927: E/AndroidRuntime(589):  at java.lang.reflect.Method.invoke(Method.java:511)
10-06 19:23:12.927: E/AndroidRuntime(589):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-06 19:23:12.927: E/AndroidRuntime(589):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-06 19:23:12.927: E/AndroidRuntime(589):  at dalvik.system.NativeStart.main(Native Method)
10-06 19:23:12.927: E/AndroidRuntime(589): Caused by: java.lang.NullPointerException
10-06 19:23:12.927: E/AndroidRuntime(589):  at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
10-06 19:23:12.927: E/AndroidRuntime(589):  at org.json.JSONTokener.nextValue(JSONTokener.java:94)
10-06 19:23:12.927: E/AndroidRuntime(589):  at org.json.JSONObject.<init>(JSONObject.java:154)
10-06 19:23:12.927: E/AndroidRuntime(589):  at org.json.JSONObject.<init>(JSONObject.java:171)
10-06 19:23:12.927: E/AndroidRuntime(589):  at com.fansheroid.facts.chicks.MainActivity.getTumblrs(MainActivity.java:156)
10-06 19:23:12.927: E/AndroidRuntime(589):  at com.fansheroid.facts.chicks.MainActivity.onCreate(MainActivity.java:62)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.Activity.performCreate(Activity.java:4465)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-06 19:23:12.927: E/AndroidRuntime(589):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
10-06 19:23:12.927: E/AndroidRuntime(589):  ... 11 more

I have been trying to figure out the problem for the past two days, but it just doesn't make sense for me. 我一直试图找出过去两天的问题,但这对我来说没有意义。

EDIT ADDED CODE 编辑添加的代码

public ArrayList<Tumblr> getTumblrs() throws ClientProtocolException,
        IOException, JSONException {
    String searchUrl = "http://api.tumblr.com/v2/blog/factsandchicks.com/posts?api_key=API_KEY";

    ArrayList<Tumblr> tumblrs = new ArrayList<Tumblr>();

    HttpClient client = new DefaultHttpClient();
    HttpGet get = new HttpGet(searchUrl);

    ResponseHandler<String> responseHandler = new BasicResponseHandler();

    String responseBody = null;
    try {
        responseBody = client.execute(get, responseHandler);
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    JSONObject jsonObject = new JSONObject(responseBody);

    JSONArray posts = jsonObject.getJSONObject("response").getJSONArray(
            "posts");
    for (int i = 0; i < posts.length(); i++) {
        JSONArray photos = posts.getJSONObject(i).getJSONArray("photos");
        for (int j = 0; j < photos.length(); j++) {
            JSONObject photo = photos.getJSONObject(j);
            String url = photo.getJSONArray("alt_sizes").getJSONObject(0)
                    .getString("url");

            Tumblr tumblr = new Tumblr(url);
            tumblrs.add(tumblr);
        }
    }
    return tumblrs;
}

Line 156: 第156行:

JSONObject jsonObject = new JSONObject(responseBody);

Ah, look at this: 啊,看看这个:

E/AndroidRuntime(589): Caused by: java.lang.NullPointerException 10-06 19:23:12.927: 
E/AndroidRuntime(589): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116) 10-06 19:23:12.927:
E/AndroidRuntime(589): at org.json.JSONTokener.nextValue(JSONTokener.java:94) 10-06 19:23:12.927:
E/AndroidRuntime(589): at org.json.JSONObject.(JSONObject.java:154) 10-06 19:23:12.927: 
E/AndroidRuntime(589): at org.json.JSONObject.(JSONObject.java:171) 10-06 19:23:12.927: 
E/AndroidRuntime(589): at com.fansheroid.facts.chicks.MainActivity.getTumblrs(MainActivity.java:156) 10-06 19:23:12.927: 
E/AndroidRuntime(589): at com.fansheroid.facts.chicks.MainActivity.onCreate(MainActivity.java:62) 

It basically says the JSON parser fails: you're probably passing NULL on line 156 of MainActivity.java. 它基本上说JSON解析器失败:你可能在MainActivity.java的第156行传递NULL。 You should check the value at that line and see if your device upgrade hasn't somehow wiped out a value or failed to retrieve a value correctly. 您应检查该行的值,看看您的设备升级是否以某种方式消除了值或未能正确检索值。

try {
    responseBody = client.execute(get, responseHandler);
} catch (Exception ex) {
    ex.printStackTrace();
}

That section of code is where your response is failing. 该部分代码是您的响应失败的地方。 You assign null to responsebody, chances are that your call there is failing so that responsebody is still null when it hits line 156. 你为响应体分配了null,很可能你的调用失败了,所以当响应第156行时,responsebody仍然是null。

Try looking in your debug output for the ex.printStackTrace(); 尝试查看ex.printStackTrace()的调试输出; output to see what is going on. 输出看看发生了什么。

通过使用HttpResponse和HttpEntity而不是ResponseHandler来解决问题,这解决了这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android应用程式因Firebase版本而当机 - android app crashes due to firebase versions 2.3.3应用程序无法在更高版本中使用 - 2.3.3 app not working in higher versions 应用程序在较高版本的操作系统上崩溃,但在较低版本上不会 - app crashing on higher OS versions, but not on lower versions Datepicker在更高版本的android中不起作用 - Datepicker not working in higher versions of android TabHost不适用于更高版本的Android - TabHost not working with higher Android Versions 应用程式在Android 4.4版本中当机,并显示以下错误。 并在android 5.0版本中表现出色 - app crashes in android 4.4 versions and give below error . and worked great from android 5.0 versions 在应用程序上针对不同的Android版本创建-在较低版本中可用,仅在较高版本中导入 - creating on app for different Android version - available on lower versions with imports only in higher version 只有在高于6的Android版本中,启动我的应用程序时才会关闭窗口。这与权限有关吗? - There is a sort of window closing upon launching my app, only in Android versions higher than 6. Is it about the Permissions? SAPUI5 Spinner 在更高版本的 android 中不起作用 - SAPUI5 Spinner is not working in higher versions of android 如何将Android 2.2应用程序迁移到更高版本 - How to migrate an Android 2.2 application to higher versions
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM