SORU
11 EYLÜL 2012, Salı


Kaç Faaliyetler vs Parçaları?

İntro:

Temel "Parçaları Öğretici" desen bir şey şöyle:

  1. Bir tablet üzerinde, sol tarafta bir liste, sağ tarafta ayrıntılar var.
  2. Her ikisi de Fragments ve aynı ikamet Activity her ikisi de.
  3. Bir telefon, bir var liste içinde Fragment Activity.
  4. Ayrıntılar Fragment Activity yeni Başlat.

(*örneğin 26* Fragments API Guide)

Her iki cihaz, işlevsellik Fragments. (basit)

Tabletbütün app1 Activityüzerindetelefonvardırbirçok 9**.


Soru:

  • 10 ** birçok telefon uygulaması bölmek için bir neden var mı?

Birsorunbu yöntem ile, senmantığı çok yinelenenana ** 11, ve ayrı bir Telefon Tablet Activities.

  • Her iki durumda da 1 Aktivite modelini korumak,daha kolay olmaz Fragments geçiş aynı mantık (sadece farklı bir düzen kullanarak)?

Bu şekilde mantık en Fragments kendilerini bulunan ve sadece kod Activity - az tek bir tekrar daha var.

Ayrıca ne ActionBarSherlock hakkında okuduğum en iyi Activities yerine Fragments (ama henüz çalışmadım) ile iş gibi görünüyor.

Öğreticiler basitleştirilmiş, ya da bu yaklaşımda önemli bir şey kaçırdım mı?


Ofiste başarılı bir şekilde her iki yaklaşım denedik - ama daha büyük bir projenin başlangıç şeyler kendim için kolaylaştırmak için mümkün olduğunca istiyorum.

İlgili sorular için bazı bağlantılar:


Güncelleştirmeleri

Soru kelle başladı - hala her telefon aktivitede tablet benim faaliyeti uygulama benim mantığı çoğaltmak istiyorum neden hakkında ikna etti.

Ayrıca okumaya değer olan Kare: çocuklar tarafından ilginç bir makale

CEVAP
21 EYLÜL 2012, Cuma


Öğreticiler çok basitleştirilmiş olduğuna katılıyorum. Onlar sadece Fragments tanıtmak ama önerilen model ile aynı fikirde değilim.

Ben de pek çok aktivite arasında uygulamanızın mantığı (DRY Principle on wikipedia) çoğaltmak için iyi bir fikir olmadığını kabul ediyorum.


Desen ActionBarSherlock Parçaları Demo uygulaması tarafından kullanılan (download here source code here) tercih ederim. En yakın öğretici söz konusu sözü eşleşen demo "" uygulamasında; ya da kaynak kod FragmentLayoutSupport. Layout denir

Bu demo, mantığı Fragment Activity ve taşındı. TitlesFragment aslında değişen Parçalar için mantığı içerir. Bu şekilde, her bir Etkinlik çok basit. Mantık hiçbiri Faaliyetleri içinde olduğu çok basit birçok Faaliyetleri çoğaltmak için çok basit hale getirir.

Bu Parçalara mantığı koyarak, varhayır kod bir kez daha yazmak gerekiyor; mevcut Parçanın içine yerleştirilen bir önemi yok. Bu temel bir öğretici tarafından önerilen daha güçlü bir desen yapar.

    /**
    * Helper function to show the details of a selected item, either by
    * displaying a fragment in-place in the current UI, or starting a
    * whole new activity in which it is displayed.
    */
    void showDetails(int index)
    {
        mCurCheckPosition = index;

        if (mDualPane)
        {
            // We can display everything in-place with fragments, so update
            // the list to highlight the selected item and show the data.
            getListView().setItemChecked(index, true);

            // Check what fragment is currently shown, replace if needed.
            DetailsFragment details = (DetailsFragment) getFragmentManager()
                .findFragmentById(R.id.details);
            if (details == null || details.getShownIndex() != index)
            {
                // Make new fragment to show this selection.
                details = DetailsFragment.newInstance(index);

                // Execute a transaction, replacing any existing fragment
                // with this one inside the frame.
                FragmentTransaction ft = getFragmentManager()
                    .beginTransaction();
                ft.replace(R.id.details, details);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.commit();
            }

        }
        else
        {
            // Otherwise we need to launch a new activity to display
            // the dialog fragment with selected text.
            Intent intent = new Intent();
            intent.setClass(getActivity(), DetailsActivity.class);
            intent.putExtra("index", index);
            startActivity(intent);
        }
    }

ABS deseninin bir diğer avantajı Tablet bir Aktivite mantık bir sürü içeren, sonunda yok olur, ve o bellek kurtarmak anlamına gelir. Öğretici desen daha karmaşık bir uygulama çok büyük bir ana faaliyetin yol açabileceği bütün parçaları mantığıyla ele almak gerekir, çünkü her zaman içinde yer almak.

Genel olarak, pek çok aktivite kullanmak zorunda olması gibi düşün. Onları kullanırken parçaları ve kayıt hafızası çok içine kodunuzu bölmek için fırsat olarak düşün.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008
  • Jucyber Tutoriais

    Jucyber Tuto

    8 EYLÜL 2009
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007