SORU
29 Mayıs 2012, Salı


Parçaları ilk veri vermek için doğru yolu?

Benim parçaları alınanlar kaza olmadığı için boş bir yapıcı ihtiyacım olduğunu öğrendim. Benim sorunum başlatıldı benim parçalar için veri (en azından bazıları) listesini kullanın. Veri listesi ile yeni parçalar başlamak için iyi bir yol ne olabilir. OnCreate seni-seviyorum - () başka bir kaynaktan veri alır veya uygun bir yaklaşım olacağını getData yöntemi?

Veri ile paket besleme gerçekten çok fazla veri var gibi çok iyi bir yaklaşım olmaz.

Öyle bir durumda (bu ton daha iyi anlıyorum) alalım.

Bir kullanıcı bir düğmeye tıkladığında bölümü başladı. Eskiden benim yaptığım yeni bir parça bu şekilde yarattı:

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    fragmentTransaction.replace(R.id.center_container, new DetailFragment(item));
    fragmentTransaction.addToBackStack(DETAIL_TAG);

    fragmentTransaction.commit();

Benim parçasında sonra:

public DetailFragment(EventItem item) {
    mItem = item;
    mPlaces = Database.getContainerPlaces(getActivity()).getValidItems();
}

Bir paket için tüm verileri veremem, o yüzden de işe yaramayacak. Ne yapmalıyım?

A: boş yapıcı ile parça başlatmak ve sonra benim aktivite belirleyiciler verileri doğrudan parçası ayarlamak için kullanılır? Ancak, ben kullanıcı giriş basarsa veri eksik olmayacak, android bölümü ve kullanıcı geri döner daha sonra yakın?

B: ben başlatma parça ile fabrika desen ve çağrı setRetainİnstance(true), ver parça bir anahtar için veri tanımlama ve daha sonra izin parça veri getirmek gerekli onCreateView bazı üçüncü kaynak?

C: ben sadece boş bir yapıcı olun ve sonra onCreate() veri parçası için gerekli getirmek mi?

Bu uygulama sorunu Android kapandığında öncelikle nesneleri tutmak, böylece portre kilitli olduğunu belirtmek gerekir ve kullanıcı yeniden başlatılır.

CEVAP
29 Mayıs 2012, Salı


Veri listesi ile yeni parçalar başlamak için iyi bir yol ne olabilir.

Kullanım fabrika deseni ve "bağımsız" Bundle gibi

package com.commonsware.empublite;

import android.os.Bundle;

public class SimpleContentFragment extends AbstractContentFragment {
  private static final String KEY_FILE="file";

  protected static SimpleContentFragment newInstance(String file) {
    SimpleContentFragment f=new SimpleContentFragment();

    Bundle args=new Bundle();

    args.putString(KEY_FILE, file);
    f.setArguments(args);

    return(f);
  }

  @Override
  String getPage() {
    return(getArguments().getString(KEY_FILE));
  }
}

Eğer parça örnek koruyarak, sadece sıradan belirleyiciler veri üyeleri eşyaları koymak için kullanarak almak gerekir. "Bağımsız" Bundle muhafaza parçası olarak yapılandırma değişiklikleri, bu yüzden olmayan korudu örnekleri, bu şekilde sağlamak için kurulum verileri muhafaza eğer kullanıcı döner ekran, vb.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012
  • The Onion

    The Onion

    14 Mart 2006