0

これは私が試したものです、

JSONObject jsonObject;
    JSONParser jParser = new JSONParser();
    jsonObject = jParser.getJSONFromUrl("http://shoppersays.com/mypromocheck/api/v1/users?&username=avinash&password=avinash2");
    try {
        String Authen_status = jsonObject.getString("Authen_status");
        Toast.makeText(getApplicationContext(), Authen_status, Toast.LENGTH_SHORT).show();
    } catch (JSONException e) { 
        Toast.makeText(getApplicationContext(), "Unable to connect", Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }

しかし、私はNullPointerException. 私はこれをAndroid 2.2で実行し、正常に実行された後、4.0で試してみました。行にヌルポインタ例外が発生しましたgetstring()。助けてください!!

編集1:

ログ

03-28 23:46:52.641: E/AndroidRuntime(1694): FATAL EXCEPTION: main
03-28 23:46:52.641: E/AndroidRuntime(1694): java.lang.RuntimeException: Unable to start              activity ComponentInfo{com.viralmo.readjson/com.viralmo.readjson.ReadJson}:    java.lang.NullPointerException
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.ActivityThread.access$600(ActivityThread.java:122)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.os.Looper.loop(Looper.java:137)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.ActivityThread.main(ActivityThread.java:4340)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at java.lang.reflect.Method.invokeNative(Native Method)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at java.lang.reflect.Method.invoke(Method.java:511)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at dalvik.system.NativeStart.main(Native Method)
03-28 23:46:52.641: E/AndroidRuntime(1694): Caused by: java.lang.NullPointerException
03-28 23:46:52.641: E/AndroidRuntime(1694):     at com.viralmo.readjson.ReadJson.onCreate(ReadJson.java:23)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.Activity.performCreate(Activity.java:4465)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-28 23:46:52.641: E/AndroidRuntime(1694):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
03-28 23:46:52.641: E/AndroidRuntime(1694):     ... 11 more
4

2 に答える 2

0

それを AsyncTask() の doInBackground() に投げます。

http://developer.android.com/reference/android/os/AsyncTask.html

およびチュートリアル: http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html#asynctask

于 2013-03-28T18:17:23.343 に答える
0

はい、@ RaghavSood がコメントしたように..androdi 3.x 以降のバージョンでは、UI スレッドでのネットワーク操作は許可されませんが、下位バージョンでは許可されます。

そのため、ネットワーク操作を実行しようとすると、3.x 以上のバージョンで NetworkOnMainThread Exception が発生します。

 jsonObject = jParser.getJSONFromUrl("http://shoppersays.com/mypromocheck/api/v1/users?&username=avinash&password=avinash2");

ここでjsonObjectは、サービスからの応答を取得できなかった場合は null になります。したがって、null である jsonObject に対する操作はスローされますNullPointerException

それを克服する方法は?

別のスレッドまたはAsyncTaskを使用して長時間実行される操作を実行する

于 2013-03-28T18:17:38.693 に答える