2016-08-19 17 views
5

Fragmanı navigationDrawer ile değiştirdiğimde bazen uygulamalarım çöküyor. Ölümcül hata çok yardımcı değil, Bu sorunu nasıl çözebilirim? ThxFragmanları hızlı değiştirdiğimde neden uygulama çöküyor?

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() dinleyici

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

deneyin değişim GetContext() = Bu ve getContext boş dönen haline geliyor –

+0

projeyi yeniden:

izlemeyi deneyin. –

+1

Yardım için Thx, ancak parçamın içinde "bu" kullanamıyorum, bu yüzden getContext() kullandım. OnAttach/onDetach yöntemini kullanarak başka bir çözüm var mı? – Xaloju

cevap

4

nedeni zaten Aktivite ayrılmış iken fragman hala kod yürütme olmasıdır. Sizin durumunuzda, Parça getContext()'a ulaştığında Parçanın başka bir Parçasına geçirilmiş halidir.

getContext() Etkinliği (parçanın artık eklenmediği) aradığı için, bir nullpointer istisnasına neden olacaktır.

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

Bu iyi çalıştı! Artık çöküyor değil ama emin olmak için daha fazla sınava ihtiyacım var. Teşekkürler. – Xaloju

0

fragmentManager sizin veridiliminin çalışma modu nedir? :replace veya showhide mu? Hızlı geçiş yaparsanız çökecektir, çünkü parçanız FragmentActivity'a bağlandığında başlatmayı tamamlamamıştır. Böyle bir şey deneyin: Bu kaza için

İlgili konular