-1

私のアプリケーションクラスは、アプリケーションコンテキストを取得し、それを使用するアクティビティです.isOnlineは、アクティビティではないクラスJSONParserから呼び出されます。isOnline は getJSONFromUrl() によって呼び出されます。Test は B クラスのメソッドです。test() はアクティビティ LoginActivity によって呼び出されます。しかし、私はヌルポイントを取得しており、その理由がわかりません。それは、コンテキストを間違った方法で取得しているためですか、それともコンテキストを ConnectivityManager incorecly または他の何かに渡しているためですか? メソッドはオンライン

private static Boolean isOnline(){

        context = MyApplication.getAppContext();
        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
               for (int i = 0; i < info.length; i++) {
                  if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                     return true;
                  }
               }
            }
         }
         return false;
    }

ミヤプリケーションクラス

public class MyApplication extends Application{

    private static Context context;

    public void onCreate(){
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return MyApplication.context;
    }
}

エラー

06-05 09:29:22.104: D/dalvikvm(526): GC_EXTERNAL_ALLOC freed 1033 objects / 82800 bytes in 52ms
06-05 09:29:52.734: D/frakc@mail.ru(526): emails
06-05 09:29:56.414: D/f(526): onItemSelected

06-05 09:30:00.446: W/KeyCharacterMap(526): No keyboard for id 0
06-05 09:30:00.446: W/KeyCharacterMap(526): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
06-05 09:30:01.814: D/parsing data to login(526): true
06-05 09:30:01.824: W/dalvikvm(526): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
06-05 09:30:01.824: E/AndroidRuntime(526): FATAL EXCEPTION: Thread-10
06-05 09:30:01.824: E/AndroidRuntime(526): java.lang.NullPointerException
06-05 09:30:01.824: E/AndroidRuntime(526):  at ua.mirkvartir.android.frontend.adapter.JSONParser.isOnline(JSONParser.java:87)
06-05 09:30:01.824: E/AndroidRuntime(526):  at ua.mirkvartir.android.frontend.adapter.JSONParser.getJSONFromUrl(JSONParser.java:114)
06-05 09:30:01.824: E/AndroidRuntime(526):  at ua.mirkvartir.android.frontend.UserFunctions.loginUser(UserFunctions.java:51)
06-05 09:30:01.824: E/AndroidRuntime(526):  at ua.mirkvartir.android.frontend.LoginActivity$1$1.run(LoginActivity.java:144)
06-05 09:30:01.824: E/AndroidRuntime(526):  at java.lang.Thread.run(Thread.java:1096)
4

3 に答える 3

0

変化する:

MyApplication.context = getApplicationContext();

MyApplication.context = this;
于 2013-06-05T10:59:34.293 に答える
0

まだ行っていない場合は、次のことを行います。

1.次のように、アプリケーション名のマニフェストにアプリケーションクラスを追加します

 <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:name=".MyApplication"

2.ACCESS_NETWORK_STATE権限を追加する

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
于 2013-06-05T11:18:19.050 に答える
0

あなたのコンテキストはnullになっています。メソッドにアプリケーションコンテキストを渡し、そのコンテキストを参照に使用します..正常に動作します

于 2013-06-05T11:22:36.167 に答える