13

paketini almıyoruz Android için yeniyim ve şu sorunla karşı karşıyayım. İkisi de Android 2 ve 3 için geliştiriyorum ve bu yüzden parçaları kullanıyorum. Ancak, Android 2 cihazlarda çalışan uygulamayı yapmak için android.support.v4.app.ListFragment dosyasını içe aktarıyorum. Ekranın oryantasyonu değiştiğinde ListFragmentim içinde seçim yapmaya devam etmem gerekiyor. onSaveInstanceState() yöntemini geçersiz kıldım ve paketi bir int. Ekran döndürüldüğünde, bu yöntem çağrılır ve int, pakete eklenir. Ancak, onActivityCreated() çağrıldığında, paketi boştur. Android web sitesinde sağlanan örneği takip ediyorum: http://developer.android.com/reference/android/app/Fragment.html, ancak yukarıda belirtildiği gibi - onSaveInstanceState() çağrıldıktan sonra, onActivityCreated()'daki paket hala boş.Android ListFragment, pakette onSaveInstanceState()/paketini kaydetmiyor onActivityCreated()

import android.support.v4.app.ListFragment; 
public class VisitsHomeFragment extends ListFragment { 
    private int selectedPosition = -1; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     if (savedInstanceState != null) { 
      if (savedInstanceState.containsKey("SELECTED_POSITION")) { 
       selectedPosition = savedInstanceState.getInt("SELECTED_POSITION"); 
      } 
     } 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt("SELECTED_POSITION", selectedPosition); 
    } 
} 

Ben bu sorunla herhangi bir yardım takdir ediyorum:

İşte kod.

+0

onRestoreInstanceState() parçaları için mevcut değildir. – Maria

+0

Tek önerdiğim, neler olup bittiğini anlayabilip edemeyeceğinizi görmek için uyum kaynaklarını ayıklamaktır. – PJL

+0

Örnek proje (HoneycombGallery) ile oynadım, ona Uyumluluk Kütüphanesi ekledim ve her şey iyi çalıştı ... Uygulamamda - değil. Benim için geçici çözüm, “android: configChanges =” yönelim ”i Manifest'e eklemekti, ancak kayıp paketin gizemini çözmüyor (aslında" Kayıp Paketin Gizemi "başlıklı bir kitap yazmayı düşünüyorum. ;-)). – Maria

cevap

2

Aynı problemi yaşadım ve sonunda iki farklı düzende (portre ve manzara) parça öğelerindeki farklı android: id öznitelik değerlerine sahip oldum.

+0

Merhaba, cevabınız için teşekkürler. Maalesef durumumda aynı sorun değil. – Maria

7

Aynı sorunu yaşadım, bu sorunu gideren düzen dosyasındaki parça öğesine android:id ekleyerek.

FragmentManager, bir parçayı yeniden oluştururken uygun paketi göndermek için kimliği kullanır.

+0

Maria ile aynı sorunu yaşıyorum ve düzen dosyamda 'fragment' öğesi için tanımlanan 'android: id' kodum var. Bu bir uyumluluk kitaplığı hatası olabilir. –

+0

Benim için sorun şu oldu: id – endryha

3

Fragment numaralı telefondan setRetainInstance(true) numaralı telefonu aramamaya dikkat edin. Biraz deneme yaptıktan sonra bunu kodumdaki hata olarak kabul ettim. Bunu yapmak zorunda olmanın dezavantajı, tüm örnek verilerinin elle toplanmasıdır.

Tüm örnek değişkenlerimi parselamak için yöntem çağrısı ve onSaveInstanceState numaralı güncelleştirmeyi güncelleştirdikten sonra, şimdi döndürme sırasında liste konumunu geri yükleyebilirim.

+0

TeşekkürlerRetainInstance (true) ayarladıysanız o zaman bir demete ihtiyacınız yok ... Fragment nesnesi asla yok edilmez ve tüm değişkeni aynı kalır. – Monstieur

İlgili konular