-1

我的应用程序类是获取应用程序上下文并在其他地方使用它的活动,其中从某个类 JSONParser 调用.isOnline,这不是活动。isOnline 由 getJSONFromUrl() 调用。Test 是 B 类的方法。test() 由活动 LoginActivity 调用。但是我得到了零点并且不明白为什么。是因为我以错误的方式获取上下文还是我将上下文错误地传递给 ConnectivityManager 或其他什么?方法是在线

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

您的上下文即将为空。在您的方法中传递应用程序上下文,然后将该上下文用于引用..它会正常工作

于 2013-06-05T11:22:36.167 回答