根据已安装的库从MapActivity或Activity扩展类

时间:2012-10-24 12:47:35

标签: android google-maps google-api

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

然后想象一下,我想在没有Google Apis的设备中发布我的应用程序,例如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类是否存在。

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

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

1 个答案:

答案 0 :(得分:0)

对于它的价值,我通常使用这样的方法(即:我 在不同场景中从两个不同的基类继承,但最终想要相同 - 或几乎相同 - 行为)是尽可能地将常用功能分解为我从两个类调用的静态助手类。