2014-11-13 4 views
0

Недавно я унаследовал проект, в котором у меня много фрагментов, которые имеют одни и те же функции.Ruby-подобные модули для фрагментов?

Я хочу реорганизовать, чтобы у меня есть BaseFragment, где все эти другие фрагменты могут простираться и где существуют все общие функции. Единственная проблема, с которой я столкнулся, заключается в том, что эти фрагменты простираются от разных классов: TaskListFragment и TaskFragment.

Есть ли способ для меня реализовать BaseFragment, чтобы различные типы фрагментов могли использовать его методы - подобно тому, как работают рубиновые модули?

ответ

0

Вы должны реализовать интерфейс в TaskListFragment и TaskFragment. Они будут делиться этими методами, но они могут/должны быть реализованы отдельно внутри классов. Дети каждого класса просто называют метод. Существует гораздо более сложный способ сделать это, но интерфейс, вероятно, лучший выбор. Этот вопрос должен пролить немного больше света на этот вопрос.

Java Multiple Inheritance

0

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

CommonTaskFragment

public class CommonTaskFragment { 

    private Fragment _fragment; 

    public CommonTaskFragment(Fragment fragment) { 
     _fragment = fragment; 
    } 

    public void doTask1() { 
     //Do something with the fragment instance 
    } 

    public void doTask2() { 
     //Do something with the fragment instance 
    } 

} 

TestFragment

public class TestFragment extends Fragment { 

    private CommonTaskFragment _commonTask; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     _commonTask = new CommonTaskFragment(this); 

     _commonTask.doTask1(); 
     _commonTask.doTask2(); 
    } 

} 
Смежные вопросы