确定Parent是Activity还是FragmentActivity

时间:2013-11-12 03:15:42

标签: android android-fragments

我有一个自定义小部件保存为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 {
        //...
    }
}

1 个答案:

答案 0 :(得分:3)

使用instanceof

例如:

if ( getParent() instanceof Activity ) {
   return ACTIVITY;
} else if ( getParent() instanceof Fragment ) {
   return FRAGMENT;
} etc…