我的操作栏(或活动页面中的任何位置)都有一个开关,我想将其设置为On或Off,具体取决于wifi状态。
如果手机的wifi打开,我想将开关设置为开,如果关闭则关闭。
我尝试将下面的代码放在onCreate,onStart上 - 但它会导致应用程序崩溃。
switchWifiToggle.setChecked(Wifi.Enabled());
我是android / java的新手,否则我会分享堆栈跟踪 logcat上有大量的信息,所以我不确定这里要分享的是什么(我是一个.NET人员)。
注册到BroadcastReceiver无济于事,因为我希望在应用程序加载(或加载完成)时将开关设置为正确状态。
此处的图像使用交换机作为主交换机 - 我想在应用程序加载到某处时设置此交换机的状态,类似于onCreate或onStart或...
由于
更新:已添加堆栈跟踪
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 :(得分: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());
}