我最近继承了一个项目,我有很多共享相同功能的片段。
我想重构,以便我有一个BaseFragment
,其中所有这些其他片段可以从所有共享函数的存在扩展。我遇到的唯一问题是这些片段来自不同的类:TaskListFragment
和TaskFragment
。
我有没有办法实现BaseFragment
以便不同类型的片段可以使用它的方法 - 类似于ruby模块的工作方式?
答案 0 :(得分:0)
因为Java不支持多重继承,所以我认为最好的解决方案是创建一个辅助类,它接收一个Fragment作为构造函数参数,并执行某个任务调用其适当的例程。
<强> 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();
}
}
答案 1 :(得分:0)
您必须在TaskListFragment和TaskFragment中实现一个接口。他们会分享方法,但他们可以/必须在类中单独实现。每个班级的孩子都会打电话给这个方法。有一种更复杂的方法可以做到这一点,但界面可能是你最好的选择。这个问题应该对这个问题有所了解。