Podczas opracowywania dla Android
, możesz ustawić swój cel (lub minimum) sdk na 4 (API 1.6) i dodać pakiet kompatybilności z systemem Android (v4), aby dodać obsługę dla Fragments
. Wczoraj zrobiłem to i pomyślnie zaimplementowałem Fragments
, aby wizualizować dane z niestandardowej klasy.Jaka jest korzyść z używania Fragmentów w systemie Android zamiast z widoków?
Moje pytanie brzmi następująco: jaka jest korzyść z używania Fragments
, a nie po prostu uzyskiwanie widoku z niestandardowego obiektu i obsługa API 1.5?
Załóżmy, że mam klasy Foo.java:
public class Foo extends Fragment {
/** Title of the Foo object*/
private String title;
/** A description of Foo */
private String message;
/** Create a new Foo
* @param title
* @param message */
public Foo(String title, String message) {
this.title = title;
this.message = message;
}//Foo
/** Retrieves the View to display (supports API 1.5. To use,
* remove 'extends Fragment' from the class statement, along with
* the method {@link #onCreateView(LayoutInflater, ViewGroup, Bundle)})
* @param context Used for retrieving the inflater */
public View getView(Context context) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.foo, null);
TextView t = (TextView) v.findViewById(R.id.title);
t.setText(this.title);
TextView m = (TextView) v.findViewById(R.id.message);
m.setText(this.message);
return v;
}//getView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
View v = inflater.inflate(R.layout.foo, null);
TextView t = (TextView) v.findViewById(R.id.title);
t.setText(this.title);
TextView m = (TextView) v.findViewById(R.id.message);
m.setText(this.message);
return v;
}//onCreateView
}//Foo
Obie metody są bardzo proste do tworzenia i pracować w działalność, która, powiedzmy, ma List<Foo>
do wyświetlania (na przykład, programowo dodając każdy z nich do ScrollView
), tak naprawdę są przydatne, czy są po prostu przesadnie uproszczonym sposobem uzyskania widoku, na przykład za pomocą powyższego kodu?
Fragmenty nie muszą mieć interfejsu użytkownika, mogą po prostu być zachowaniem wielokrotnego użytku. Widok byłby wówczas zbędny. –
Odpowiedziałem na to w innym pytaniu. Zobacz http://stackoverflow.com/a/14912608/909956 T; dr - czasami fragmenty pozwalają tworzyć więcej komponentów wielokrotnego użytku niż polegać na niestandardowej implementacji widoku. zobacz link z tego powodu. –