2017-01-18 2 views
1

У меня есть 5 фрагментов, где каждый класс фрагмент имеет тот же метод:Несколько фрагментов с таким же методом

public class FirstFragment extends Fragment { 
    // other methods 

    public void clear() { 
     data.clear(); 
     adapter.notifyDataSetChanged(); 
    } 
} 

Второй фрагмент:

public class SecondFragment extends Fragment { 
    // other methods 

    public void clear() { 
     data.clear(); 
     adapter.notifyDataSetChanged(); 
    } 
} 

И так далее ...

Как лучше упорядочить код, чтобы мне не пришлось копировать и вставлять этот метод в каждый из моих 5 фрагментов (т. Е. Сделать один метод, вызвать тот же метод в каждом фрагменте).

+0

Вы могли бы сделать статический класс с методом в и вызывать его из каждого из фрагментов. Ответ, предоставленный @Saurabh, лучше, сначала попробуйте – Aidin

+0

. Много способов сделать это. 1) Создайте базовый фрагмент с реализацией метода и получите от него все ваши фрагменты. 2) Создайте статический метод и обратитесь к нему. – akash93

+0

Основная идея метода - повторное использование. Создайте один статический конечный метод в одном классе Утилиты. Когда захотите, просто вызовите этот метод, используя имя класса. Таким образом, компилятор будет оптимизировать этот метод как окончательный метод. –

ответ

4

Вам необходимо использовать концепцию Inheritance, поместить все общие переменные и методы в BaseFragment и расширить другие возможности.

public class BaseFragment extends Fragment { 
public Data data; 
public Adapter adapter; 
     public void clear() { 
      data.clear(); 
      adapter.notifyDataSetChanged(); 
     } 
    } 

Первое:

public class FirstFragment extends BaseFragment { 
    // other methods 
} 

Второе:

public class SecondFragment extends BaseFragment { 
    // other methods 
} 
+0

Вы также можете сделать метод 'protected', так как нет необходимости быть видимым вне класса. –

+0

Sup'b Answer .. (: –