3

想象一下,我有一个相机应用程序,我在其中一个角落显示一个小的 MapView,显示设备所在的位置。所以我必须从 MapActivity 扩展我的活动才能做到这一点。

然后想象一下,我想在没有 Google API 的设备上发布我的应用程序,例如 Kindle。由于 MapActivity 不再存在,我应该从常规 Activity 扩展。

我知道我可以设置

<uses-library
        android:name="com.google.android.maps"
        android:required="false" />

即使缺少库,也让用户安装应用程序。然后使用

    try {
        Class.forName("com.google.android.maps.MapView");
        googleMapsEnabled = true;
    } catch( ClassNotFoundException e ) {
        googleMapsEnabled = false;
    }

检查 MapView 类是否存在。

但问题是我扩展的基类,如果 Google 地图不可用,它应该是 Activity 而不是 MapActivity。

我的问题是,如何使用相同的代码来支持这两个选项,而不根据安装的库将整个代码复制到不同的类中?

4

1 回答 1

0

对于它的价值,我通常处理这样的事情的方法(即:我必须在不同的场景中从两个不同的基类继承,但最终想要相同或几乎相同的行为)就像我一样爆发可以将通用功能放入我从两个类中调用的静态帮助器类中。

于 2012-10-24T12:56:30.650 回答