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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012