条件类导入

时间:2013-02-21 23:00:53

标签: java android import

我正在尝试构建一个具有向后兼容性的应用,但我仍然使用一些仅在较新的SDK版本中可用的类,方法是选中android.os.Build.VERSION.SDK_INT

但是,我仍然需要将这些类导入到我的项目中,并且在旧设备上运行时会出现错误。我可以在android中有条件地导入类吗?我曾尝试在谷歌上寻找一些东西,但我可能不知道要搜索什么来返回有效的结果。

tl; dr - 我想在较旧的设备上使用在较新的API / SDK版本中添加的类,但import newer.api.level.class阻止我的应用程序工作。我该怎么办?

编辑:特别是对我来说,我正在我的一个活动中实现PopupMenu.OnMenuItemClickListener协议,这就是应用程序所抱怨的。

错误为Failed resolving Lcom/example/myApp; interface 575 'Landroid/widget/PopupMenu$OnMenuItemClickListener;'

2 个答案:

答案 0 :(得分:3)

这里的问题不是import(应该在编译时处理),但是Activity(在每个平台上使用)实现了PopupMenu.OnMenuItemClickListener,这导致了运行较旧平台的设备存在问题。

使用新的API功能时,请务必确保所有对新类/方法的使用在具有适合API级别的设备上执行,Conditional Execution

这里正确的方法是不让Activity实现监听器,而是使监听器成为条件执行块中的匿名类,类似于它的执行方式here

答案 1 :(得分:0)

在不知道详细信息的情况下,您可能希望看下面的重点是向后兼容性;

http://developer.android.com/tools/extras/support-library.html