2014-02-06 15 views
0

根據wifi狀態,我喜歡將其設置爲「開」或「關」,以便在我的操作欄(或活動頁面中的任意位置)上有開關。
如果手機的wifi開着,我想將開關設置爲開,如果它關閉,則關閉。加載活動時根據條件將開關設置爲關閉

我嘗試將代碼放置在onCreate,onStart - 但它導致應用程序崩潰。

switchWifiToggle.setChecked(Wifi.Enabled()); 

我是新的android/java,否則我會分享堆棧跟蹤。
關於logcat有噸和噸的信息,所以我不確定在這裏共享什麼(我是一個.NET人)。

註冊到BroadcastReceiver將無濟於事,因爲我希望切換設置爲正確的狀態,而應用程序正在加載(或完成加載)。

這裏的圖像使用交換機作爲主交換機 - 我要將此開關的狀態,一旦應用程序被加載的地方,類似的onCreate或在onStart或...

enter image description here

謝謝

更新:堆棧跟蹤添加

02-06 09:15:39.943  632-1066/? E/LocSvc_IzatApiV02﹕ W/virtual int izat_core::IzatApiV02::injectLocation(GpsExtLocation):665]: error! inject position failed 
02-06 09:15:39.963  632-1066/? E/LocSvc_ApiV02﹕ W/virtual loc_api_adapter_err LocApiV02::injectPosition(double, double, float):492]: error! status = eLOC_CLIENT_FAILURE_INVALID_PARAMETER, inject_pos_ind.status = UNKNOWN 
02-06 09:15:40.063 16882-16882/com.learn.wifitwo E/WiFiMainActivity﹕ +++ ON CREATE +++ 
02-06 09:15:40.113 16882-16882/com.learn.wifitwo E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.learn.wifitwo, PID: 16882 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.learn.wifitwo/com.learn.wifitwo.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.learn.wifitwo.WiFi.IsEnabled()' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.learn.wifitwo.WiFi.IsEnabled()' on a null object reference 
     at com.learn.wifitwo.MainActivity.onCreate(MainActivity.java:99) 
     at android.app.Activity.performCreate(Activity.java:5231) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
+0

發表更多代碼。 – Blackbelt

+0

...和LogCat錯誤堆棧跟蹤。基本上,紅色的東西;) – 2Dee

+0

讓我們說,如果我必須在.NET中這樣做,我會有 1)在Form類中,訂閱FormLoad事件 2),並在該FormLoad事件中,我會檢查參數然後設置swtich的屬性。 – Musa

回答

0

「布爾com.l earn.wifitwo.WiFi.IsEnabled()'我猜你有空無線零對象。你調用的IsEnabled方法之前,您應該初始化對象:)我不知道什麼是對象的名字,但我可以推測它可能是

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     WiFi wifiObject = new WiFi(); 
     switchWifiToggle.setChecked(wifiObject.isEnabled()); 

    } 

或作出之類的具有WiFi功能的方法靜態的,那麼你可以使用它就像那樣

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     switchWifiToggle.setChecked(WiFI.isEnabled()); 

    }