3
想象一下,我有一个摄像头应用程序,我在一个角落显示一个小型MapView,显示设备位于何处。所以我必须从MapActivity扩展我的活动才能做到这一点。根据安装的库从MapActivity或Activity扩展课程
然后想象我想在没有Google Apis的设备中发布我的应用,例如Kindle。由于MapActivity不再存在,我应该从常规活动延伸。
我知道我可以设置
<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。
我的问题是,我怎样才能使用相同的代码来支持这两个选项,而不需要根据安装的库将整个代码复制到不同的类中?
在我的情况下,几乎整个应用程序将在这个辅助类,这不是一个选项,因为它太复杂 –
嗯。不确定,那么 - 我承认,我对你的情况并不熟悉,但作为一条规则,如果你编码Java并且你需要从两个不同的基类继承,你必须创建两个类。如果你不想复制东西,你必须将它们移出到一些可重用的空间。 如果您的整个应用程序都在继承自Activity的类中,是否有意义将它分解为可重用的较小块? –
是的,这将是最好的选择,但有时你没有时间按照他们应该完成的方式来完成任务。 –