想象一下,我有一个相机应用程序,我在一个角落显示一个小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。
我的问题是,我如何使用相同的代码来支持这两个选项,而不是根据安装的库将整个代码复制到不同的类中?
答案 0 :(得分:0)
对于它的价值,我通常使用这样的方法(即:我 在不同场景中从两个不同的基类继承,但最终想要相同 - 或几乎相同 - 行为)是尽可能地将常用功能分解为我从两个类调用的静态助手类。