Kaç Faaliyetler vs Parçaları?
İntro:
Temel "Parçaları Öğretici" desen bir şey şöyle:
- Bir tablet üzerinde, sol tarafta bir liste, sağ tarafta ayrıntılar var.
- Her ikisi de
Fragments
ve aynı ikametActivity
her ikisi de. - Bir telefon, bir var
liste içinde
Fragment
Activity
. - 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:
- Dilemma: when to use Fragments vs Activities:
- Patterns when to use Activity Transition vs Dynamic Fragments
- android - need some clarifications of fragments vs activities and views
- Activities or fragments in Android?
- Multiple fragments and activities interaction design
- So what are the exact advantages of Fragments in Android 3.0?
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
Öğ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.
Android Navigasyon Çekmece görüntü ara...
Parçaları içinde parçaları...
Dinamik olarak mümkün ve C derleme yür...
Ne zaman Android uygulamalarında parça...
Android Parçaları. Ekran döndürme sıra...