Android类层次结构和与Fragment的接口

时间:2014-01-03 15:37:14

标签: java android inheritance interface multiple-inheritance

我有两个Fragment层次结构:

Fragment - > MyAbstractFragment1 - > MyAbstractFragment2 - > ... - > MyAbstractFragmentN - > MyFragment

Fragment - > ListFragment - > MyAbstractListFragment1 - > MyAbstractListFragment2 - > ... - > MyAbstractListFragmentN - > MyListFragment

MyAbstractFragmentNMyAbstractListFragmentN都实现了IMyFragment,因此MyFragmentMyListFragment都实现了此接口。

有没有办法创建Fragment类型的字段来实现IMyFragment?那么'MyListFragment'和'MyFragment'都是正确的类型吗?

我不能从MyFragmentMyListFragment继承创建超类,因为从一开始就有很大不同。它们只有Fragment个共同点,IMyFragment来自MyAbstractListFragmentNMyAbstractFragmentN

我想写:

class SomeClass{
    private {FragmentImplementsIMyFragment} mFragment;

    ...
    mFragment = new MyFragment();
    ...
    mFragment = new MyListFragment();
}

我需要这两种行为:来自Fragment和来自IMyFragment

2 个答案:

答案 0 :(得分:1)

  

有没有办法创建由Fragment实现的字段   IMyFragment?所以'MyListFragment'和'MyFragment'都是   正确的类型吗?

根据您的目标是什么,您可能希望使用IMyFragment作为类型,或者在代码中进行一些检查以查看Fragment是否实现了所需的接口。您还可以检查创建对象的类是什么,并相应地采取行动

答案 1 :(得分:0)

我所取得的最好成绩是添加IMyFragment方法:

Fragment getFragment();

并始终实施:

Fragment getFragment() { return this; }