我有两个Fragment
层次结构:
Fragment
- > MyAbstractFragment1
- > MyAbstractFragment2
- > ... - > MyAbstractFragmentN
- > MyFragment
Fragment
- > ListFragment
- > MyAbstractListFragment1
- > MyAbstractListFragment2
- > ... - > MyAbstractListFragmentN
- > MyListFragment
MyAbstractFragmentN
和MyAbstractListFragmentN
都实现了IMyFragment
,因此MyFragment
和MyListFragment
都实现了此接口。
有没有办法创建Fragment
类型的字段来实现IMyFragment
?那么'MyListFragment'和'MyFragment'都是正确的类型吗?
我不能从MyFragment
和MyListFragment
继承创建超类,因为从一开始就有很大不同。它们只有Fragment
个共同点,IMyFragment
来自MyAbstractListFragmentN
和MyAbstractFragmentN
。
我想写:
class SomeClass{
private {FragmentImplementsIMyFragment} mFragment;
...
mFragment = new MyFragment();
...
mFragment = new MyListFragment();
}
我需要这两种行为:来自Fragment
和来自IMyFragment
。
答案 0 :(得分:1)
有没有办法创建由Fragment实现的字段 IMyFragment?所以'MyListFragment'和'MyFragment'都是 正确的类型吗?
根据您的目标是什么,您可能希望使用IMyFragment
作为类型,或者在代码中进行一些检查以查看Fragment是否实现了所需的接口。您还可以检查创建对象的类是什么,并相应地采取行动
答案 1 :(得分:0)
我所取得的最好成绩是添加IMyFragment
方法:
Fragment getFragment();
并始终实施:
Fragment getFragment() { return this; }