SORU
15 Kasım 2012, PERŞEMBE


Android FragmentManager BackStackRecord.çalıştırmak atma NullPointerException

EDİT2: Kendi soruma cevap aşağıda

Ben bazen Parçaları ile çalışırken, aşağıdaki özel durum alıyorum:

11-15 09:04:21.023: E/AndroidRuntime(4057): FATAL EXCEPTION: main
11-15 09:04:21.023: E/AndroidRuntime(4057): java.lang.NullPointerException
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:591)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.os.Handler.handleCallback(Handler.java:615)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.os.Looper.loop(Looper.java:137)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at android.app.ActivityThread.main(ActivityThread.java:4745)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at java.lang.reflect.Method.invokeNative(Native Method)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at java.lang.reflect.Method.invoke(Method.java:511)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-15 09:04:21.023: E/AndroidRuntime(4057):     at dalvik.system.NativeStart.main(Native Method)

Bunun neden olduğunu anlamaya görünmüyor olabilir mi? Parçaları çıkarırken parçaları backstack hemen temizledim olmamakla ilgisi var bence.

EDİT1: BackStackRecord run() çağrıldığında durum oluşur thru execPendingTransactions(). Yöneticisinden bir parçası kaldırmak için çalıştığında.

case OP_REMOVE: {
  Fragment f = op.fragment;
  f.mNextAnim = op.exitAnim; <----
  mManager.removeFragment(f, mTransition, mTransitionStyle);
}
break;

CEVAP
15 Kasım 2012, PERŞEMBE


Kendi soruma cevap:

Bu durum, (sonunda) FragmentTransaction aradığınızda atılır.Kaldır(null); FragmentTransaction.() işlemek;

EDİT: Ve ayrıca,. çağırırken ve yorumun çıkış noktası Çember shinyuX; gibi İki kez(null) veya .(null) Ekle(null) Ekle .(null) yöntemleri, ve muhtemelen de ayır .gizle(null)

Çağrıldıktan sonra () buna göre, bu işlem FragmentManager. sıraya olacak Ameliyat sonrası işlendiğinde, sonuç olarak, açıkça FragmentManager arayın.() executePendingTransactions FragmentManager sıra iş parçacığı çağırdığında, ya da, bir NullPointerException fırlatır.

Benim durumumda, küresel bir nesne parçası Birleşik Devletleri tamir ediyordum. Yoksa parça gösteren olup olmadığını kontrol ettim ve görünen parçalar kaldırıldı. Ama yeni bir FragmentActivity başladım çünkü, bu devletler hala görünmez iken gerçek olarak kabul edilmiştir. Bu bir tasarım hatası.

Tasarım hatayı düzeltmeden sonra diğer çözüm basitti: FragmentManager olmadığını kontrol edin.() findFragmentByTag parça çıkarmadan önce boş döndü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006
  • tychoadragmire

    tychoadragmi

    20 Mart 2006
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010