2015-06-22 16 views
0

Я больше знаком с разработкой iOS, чем с Android, и мне интересно, должен ли весь код записываться в Activity, а не иметь «модельный» класс.Android, должен ли весь код быть записан в виде действия

У меня есть несколько экранов, каждый из которых имеет несколько флажков, и я хочу, чтобы все они вели себя одинаково при щелчке. Я пытаюсь понять, как бы это сделать, не записывая повторяющийся код в каждом действии. Благодаря!

+1

Может подкласс некоторые пользовательские родительскую активность? – tachyonflux

+1

Какие экраны вы говорите? Фрагменты или отдельные виды деятельности? – Simas

+1

Все, что касается OOP-джаза, по-прежнему применяется, поскольку разработка Android осуществляется на Java, полностью способном языке OOP, так что вы не пытаетесь радикально изменить свои методы разработки, но идиоматические способы сделать что-то изменились. – Machinarius

ответ

1

Нет, не стоит. Если вы знакомы с java, подумайте о деятельности как расширении main с добавлением OO. В вашем конкретном примере вы можете создать класс с таким методом, как: <MethodName>(View <checkboxClickedName>){ //your code here }. а затем добавьте это к флажку в XML android:onClick="<MethodName>", вам может понадобиться полный путь пакета (например, com.example.app.)

Примечание: если некоторые из требуемых команд/объектов доступны только в рамках действия, должен создать это в виде кальций, который extends Activity или предпочтительно в рамках текущей активности.

1

У вас может быть базовый класс, который расширяет активность, которая содержит методы, которые вы хотите выполнить при щелчке (либо реализованном, либо абстрактном). Используйте этот новый базовый класс вместо активности при создании новых действий. В макете xml вы можете установить onclick каждого флажка как метод в базовом действии, который вы хотите выполнить.

1

Лучшей практикой было бы использование одного действия и переключение фрагментов, как если бы они были вашими экранами. Затем активность может просто реализовать интерфейс слушателя, который фрагменты будут повторно использовать.


Поскольку у вас есть несколько видов деятельности, это становится немного сложнее. До действительно повторного использования одного слушателя, я могу придумать один (не такой красивый) вариант. Создание статического слушателя и ленивый нагрузки это:

public class MainActivity extends Activity { 

    private static View.OnClickListener sCheckboxClickListener; 

    public static View.OnClickListener getCheckboxClickListener() { 
     if (sCheckboxClickListener == null) { 
      sCheckboxClickListener = new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // Work with v 
       } 
      }; 
     } 
     return sCheckboxClickListener; 
    } 

} 

И в каждом из ваших действий по телефону:

findViewById(R.id.checkbox1) 
      .setOnClickListener(MainActivity.getCheckboxClickListener()); 
Смежные вопросы