片段的Ruby类模块?

时间:2014-11-13 23:28:51

标签: java android android-fragments

我最近继承了一个项目,我有很多共享相同功能的片段。

我想重构,以便我有一个BaseFragment,其中所有这些其他片段可以从所有共享函数的存在扩展。我遇到的唯一问题是这些片段来自不同的类:TaskListFragmentTaskFragment

我有没有办法实现BaseFragment以便不同类型的片段可以使用它的方法 - 类似于ruby模块的工作方式?

2 个答案:

答案 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中实现一个接口。他们会分享方法,但他们可以/必须在类中单独实现。每个班级的孩子都会打电话给这个方法。有一种更复杂的方法可以做到这一点,但界面可能是你最好的选择。这个问题应该对这个问题有所了解。

Java Multiple Inheritance