2012-12-03 10 views
13

Camera niyetini başlattığımda, fragment yaşam döngüsünde onResume önce çağrıldığını fark ettim.Parçaların yaşam döngüsüne göre fragmanın onActivityResult adı ne zaman çağrılır?

Ayrıca onStart'dan sonra onActivityResult adı verildiğini fark ettim.

Ama şu garip kısım: değişken fileUri == "bazı görüntü yolum" var. Bu değişken

  • NOTNULL onStart.
  • onActivityResult
  • yılında
  • NOT NULL NULL tekrar onResume
  • yılında

bu sadece zamanın% 50 olur, LogCat

12-03 14:39:42.418: D/Fragment1(29220): onStart fileUri: file:///mnt/sdcard/OPS_IMAGES/IMG_20121203_143933.jpg 
12-03 14:39:42.463: W/PhoneWindow(29220): Previously focused view reported id 2131034140 during save, but can't be found during restore. 
12-03 14:39:42.463: D/Fragment1(29220): onActivityResult fileUri is NULL!!! 
12-03 14:39:42.468: D/Fragment1(29220): onResume fileUri: file:///mnt/sdcard/OPS_IMAGES/IMG_20121203_143933.jpg 

Kötü parçasıdır görüyoruz. Diğer bir% 50 onActivityResult dosyada hatasız olarak erişebilir ...

Bunu nasıl hata ayıklamalıyım?

NOT: Basitlik amacıyla, onResume, onStart, onActivityResult yöntemlerinin kodlarını dahil etmedim. Bunlar değişken kontrol ve log çağrısı ile sadece temel yöntemlerdir. Gerekirse, soruları düzenler ve bu yöntemleri eklerim.

NOT2: Eski API sürümlerindeki parçaları desteklemek için google destek kütüphanesi kullanıyorum.

+0

Eğer bu sorunu çözmek için yönetmek mü geri aramalar edilir? – aProgrammer

+2

Aynı 'Fragment1' sınıfının farklı örnekleri olabilir mi? Örnek başına tanımlayıcıyı yazdırmak için günlüklere 'System.identityHashCode (this)' ekleyin. – Xiao

cevap

1

Bu, içinde bulunduğum bir sorun ya da sahip olduğum bir sorun değil, ancak değişkeniniz herhangi bir nedenden dolayı görünür değilse ... Değere referans vermek için farklı bir yöntem kullanmayı denediniz mi? ?

Benim önerim bir SharedPreferences değişkenini kullanmayı denemek ve Editör'de değeri kaydetmek ve geri çekmektir. Bu en iyi çözüm olmayabilir, ancak şu an için bir iş olabilir.

Posta kutunuzdaki benzer hata iletisini aldım;

"01-27 11:13:42.899: W/PhoneWindow(1591): Previously focused view reported id 16908862 during save, but can't be found during restore." 

benim sorunu benim "Boş Yapıcı" Benim parçasını yeniden instansiateing, değil düzeltmek başardı yol. Parçacıkta, kullanıcı seçimleri ile bir öğe seçtiğinde, aktiviteye geri iletilen bir 'ID' olan sadece 1 değişkenim var. Normal yapıcımı, iletilen değerler ile çağırma yoluyla parçamı yeniden tasarladım.

.

public UIDialogFragmentVolume() { 
    this(ID); 
} 

public UIDialogFragmentVolume(int typeID) { 
    ID = typeID; 
} 

Bu sayede sorununuzu belirlemenize ve düzeltmenize yardımcı oluruz.

2

orijinal soruyu cevaplamak için buraya Yaşam Döngüsü sırası

12-09 16:38:41.800 10227-10227/org.Test I/Fragment: ## OnStart() 
12-09 16:38:41.820 10227-10227/org.Test I/Fragment: ## OnActivityResult() 
12-09 16:38:41.821 10227-10227/org.Test I/Fragment: ## OnResume()