2016-08-19 5 views
5

जब भी मैं नेविगेशन ड्रावर के साथ खंड बदलता हूं तो मेरे ऐप्स कभी-कभी क्रैश होते हैं। घातक त्रुटि बहुत मदद नहीं कर रही है, मैं इस समस्या को कैसे हल कर सकता हूं? Thxजब मैं टुकड़े तेजी से स्विच करता हूं तो मेरा ऐप क्रैश क्यों होता है?

FATAL EXCEPTION: main 
    Process: acr.acr_app, PID: 29425 
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference 
    at android.view.ViewConfiguration.get(ViewConfiguration.java:359) 
    at android.view.View.<init>(View.java:3656) 
    at android.view.View.<init>(View.java:3751) 
    at android.view.ViewGroup.<init>(ViewGroup.java:492) 
    at android.widget.LinearLayout.<init>(LinearLayout.java:200) 
    at android.widget.LinearLayout.<init>(LinearLayout.java:196) 
    at android.widget.LinearLayout.<init>(LinearLayout.java:192) 
    at android.widget.LinearLayout.<init>(LinearLayout.java:188) 
    at android.widget.TableRow.<init>(TableRow.java:61) 
    at acr.acr_app.MyFragment3$2.onChildAdded(MyFragment3.java:170) 
    at com.google.android.gms.internal.zzaer.zza(Unknown Source) 
    at com.google.android.gms.internal.zzagp.zzSu(Unknown Source) 
    at com.google.android.gms.internal.zzags$1.run(Unknown Source) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 

Fragment3 line170: onStart() श्रोता

tableRow = new TableRow(getContext()); 
    tableRow.setLayoutParams(new TableLayout.LayoutParams(
    TableLayout.LayoutParams.WRAP_CONTENT, 
    TableLayout.LayoutParams.WRAP_CONTENT, 1.0f)); 
+0

कोशिश परिवर्तन getContext() = इस और इस परियोजना के पुनर्निर्माण –

+0

अपने getContext अशक्त लौटने होता जा रहा है। मदद के लिए –

+1

Thx, लेकिन मैं अपने टुकड़े के अंदर "यह" का उपयोग नहीं कर सकता, इसलिए मैंने getContext() का उपयोग किया। क्या एटैच/ऑनडेटा विधि का उपयोग कर कोई और समाधान है? – Xaloju

उत्तर

4

इस दुर्घटना के लिए कारण यह है कि टुकड़ा अभी भी कोड को क्रियान्वित कर रहा है, जबकि यह पहले से ही अपने गतिविधि से अलग किया जाता है।

आपके मामले में Fragment getContext() तक पहुंचने पर पहले से ही किसी अन्य टुकड़े पर स्विच हो चुका है। क्योंकि getContext() गतिविधि की तलाश में है (जो टुकड़ा अब से जुड़ा हुआ नहीं है) यह एक nullpointer अपवाद का कारण बन जाएगा।

निम्नलिखित का प्रयास करें:

if(isAdded()){ 
    tableRow = new TableRow(getContext()); 
    tableRow.setLayoutParams(new TableLayout.LayoutParams(
    TableLayout.LayoutParams.WRAP_CONTENT, 
    TableLayout.LayoutParams.WRAP_CONTENT, 1.0f)); 
} 
+0

यह ठीक काम किया! यह अब और दुर्घटनाग्रस्त नहीं है लेकिन मुझे सुनिश्चित करने के लिए और अधिक परीक्षण की आवश्यकता है। धन्यवाद। – Xaloju

0

fragmentManager के अपने टुकड़ा के काम मोड क्या है? क्या यह :replace या showhide है? यदि आप तेजी से स्विच करते हैं तो यह क्रैश हो जाएगा, क्योंकि FragmentActivity से कनेक्ट होने पर आपका टुकड़ा प्रारंभिकता पूर्ण नहीं हुआ है। कुछ इस तरह का प्रयास करें:

संबंधित मुद्दे

 संबंधित मुद्दे