При разработке для Android
вы можете установить целевой (или минимальный) sdk на 4 (API 1.6) и добавить пакет совместимости android (v4), чтобы добавить поддержку для Fragments
. Вчера я сделал это и успешно реализовал Fragments
для визуализации данных из пользовательского класса.В чем преимущество использования фрагментов в Android, а не Views?
Мой вопрос заключается в следующем: в чем преимущество использования Fragments
в отличие от простого получения вида из пользовательского объекта и поддержки API 1.5?
Например, у меня есть класс 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
Оба метода очень просто создавать и работать с деятельностью, которая, скажем, имеет List<Foo>
для отображения (например, программно добавляя каждый к ScrollView
), так что Fragments
действительно все, что полезно, или это просто прославленное упрощение получения вида, например, через код выше?
Фрагменты не должны иметь пользовательский интерфейс, они могут быть просто повторным действием. В этом случае представление будет избыточным. –
Я ответил на это в другом вопросе. См. Http://stackoverflow.com/a/14912608/909956 T; dr - иногда фрагменты позволяют создавать больше компонентов многократного использования, чем полагаться на реализацию пользовательского представления. см. ссылку для чего. –