1

我有一个自定义小部件保存为 android 库项目。
自定义小部件使用 Fragment,因此需要访问 Application 的 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 {
        //...
    }
}
4

1 回答 1

3

使用instanceof.

例如:

if ( getParent() instanceof Activity ) {
   return ACTIVITY;
} else if ( getParent() instanceof Fragment ) {
   return FRAGMENT;
} etc…
于 2013-11-12T03:53:13.857 回答