加载活动时,根据条件将开关设置为开

时间:2014-02-06 13:51:13

标签: java android widget switch-statement

我的操作栏(或活动页面中的任何位置)都有一个开关,我想将其设置为On或Off,具体取决于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)

1 个答案:

答案 0 :(得分:0)

'boolean com.learn.wifitwo.WiFi.IsEnabled()'我猜你有无效的null null对象。在调用IsEnabled方法之前,你应该初始化你的对象:)我不知道对象的名称是什么,但我可以认为它可能是那个

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

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

     } 

或者将类WiFi中的Enabled方法设为静态方法,然后就可以像那样使用它

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

        switchWifiToggle.setChecked(WiFI.isEnabled());

     }