我正在尝试构建一个具有向后兼容性的应用,但我仍然使用一些仅在较新的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;'
答案 0 :(得分:3)
这里的问题不是import
(应该在编译时处理),但是Activity(在每个平台上使用)实现了PopupMenu.OnMenuItemClickListener
,这导致了运行较旧平台的设备存在问题。
使用新的API功能时,请务必确保所有对新类/方法的使用仅在具有适合API级别的设备上执行,Conditional Execution
这里正确的方法是不让Activity实现监听器,而是使监听器成为条件执行块中的匿名类,类似于它的执行方式here。
答案 1 :(得分:0)
在不知道详细信息的情况下,您可能希望看下面的重点是向后兼容性;
http://developer.android.com/tools/extras/support-library.html