我有一个自定义小部件保存为android库项目 自定义窗口小部件使用片段,因此需要访问应用程序的FragmentManager。
我希望我的自定义窗口小部件与扩展Activity(Honeycomb或更高版本)的应用程序以及扩展FragmentActivity的应用程序兼容。
为了实现这一点,我需要我的自定义窗口小部件来决定是否使用getFragmentManager()
或getSupportFragmentManager()
基于父级是否扩展Activity或FragmentActivity,如下所示。
switch (getApplicationType()) {
case ACTIVITY__HONEYCOMB_ONWARD
FragmentManager fm = ((Activity)getContext()).getFragmentManager();
//...
break;
case FRAGMENT_ACTIVITY
FragmentManager fm = ((FragmentActivity)getContext()).getSupportFragmentManager();
//...
break;
//...
让我难过的是如何在我的getApplicationType()方法中编写测试。
private int getApplicationType() {
if (??? How do I write this test ???) {
return ACTIVITY__HONEYCOMB_ONWARD;
} else if (??? How do I write this test ???) {
return FRAGMENT_ACTIVITY;
} else {
//...
}
}
答案 0 :(得分:3)
使用instanceof
。
例如:
if ( getParent() instanceof Activity ) {
return ACTIVITY;
} else if ( getParent() instanceof Fragment ) {
return FRAGMENT;
} etc…