2013-12-20 83 views
0

一位用戶告訴我,他無法在應用程序中打開一個片段,因爲他崩潰了。我有logcat的:Android崩潰打開一個片段

java.lang.NullPointerException 
at com.dd.androreboot.devicecontrolfragment.onCreateView(devicecontrolfragment.java:162) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 
at android.app.BackStackRecord.run(BackStackRecord.java:635) 
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1399) 
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4921) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
at dalvik.system.NativeStart.main(Native Method) 

在管線162我有這樣的代碼:

ConnectivityManager connManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo mobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     datatoggle = (ToggleButton)v.findViewById(R.id.datatoggle); 
     datatoggle.setChecked(mobile.isConnectedOrConnecting()); //line 162 

這部分代碼需要檢查,如果在3G連接,如果是,則切換按鈕狀態變爲真。它適用於我嘗試過的所有設備,但不適用於此:Galaxy Note 10.1(p4notewifi)。任何幫助?

+0

你可以發佈整個onCreateView方法嗎? – Gooziec

+1

是不是'移動'null?如果沒有3G,則該實例可能爲空。或'dataToggle'可能未正確初始化。 – gunar

+0

你能展示一些你的片段類的更多代碼嗎? – GrIsHu

回答

5

試試這個:

ConnectivityManager connManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo mobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    datatoggle = (ToggleButton)v.findViewById(R.id.datatoggle); 


    if(mobile != null) { 
    datatoggle.setChecked(mobile.isConnectedOrConnecting()); //line 162 
    } else { 
     datatoggle.setChecked(false); //line 162 
    } 
+0

Aaaaaaaah所以這樣如果一個設備沒有得到的3G模塊不會崩潰的權利?我沒有考慮過一個設備沒有3G! –

+0

當前默認網絡的NetworkInfo對象,如果沒有網絡默認網絡當前處於活動狀態,則爲null。 – Kristopher

4

getNetworkInfo()可以返回null。在調用方法之前檢查非null。

Specifically

返回

一個NetworkInfo對象對於所請求的網絡類型或null如果類型不被支持的裝置。

+0

謝謝我解決了:) –