Android FragmentManager BackStackRecord.çalıştırmak atma NullPointerException | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • manadude21

    manadude21

    11 Mart 2008
  • YouChewBu

    YouChewBu

    26 Ocak 2009