#android
#Android
Вопрос:
Недавно я пишу приложения для Android для управления некоторыми внешними устройствами. Существуют разные типы устройств, но они очень похожи. Поэтому макет для каждого действия для управления устройством также очень похож. Например, все макеты в основном имеют одинаковые текстовые представления, редактируемые представления и кнопки. Разница в том, что на одном устройстве есть listview, а на других его нет.
Теперь я просто копирую каждый макет (и соответствующее действие) для каждого устройства и изменяю несколько вещей в каждом действии. Я чувствую, что это излишне, и я думаю, что должен быть другой более простой / эффективный способ его реализации, но как?
Спасибо.
Комментарии:
1. Реализуйте фрагмент для всех общих задач и реализуйте 1 для особого случая. Повторно используйте их в своей деятельности.
Ответ №1:
Вы можете повторно использовать общую часть своих макетов, используя тег include
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/app_bg"
android:gravity="center_horizontal">
<include layout="@layout/example"/>
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:padding="10dp" />
...
в этом случае макет из layout / example будет использоваться повторно.
Подробнее здесь: https://developer.android.com/training/improving-layouts/reusing-layouts.html#Include
Комментарии:
1. При этом, похоже, мне все еще нужно копировать одну и ту же часть кода в каждом действии. Например: EditText exampleText = (EditText) findViewById (R.id.edtExampleText);
2. Да, но тогда вы можете создать другую логику для одного и того же макета. Если у вас одинаковая логика и макет, вы можете использовать фрагменты. developer.android.com/guide/components/fragments.html