0

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

但是,我仍然需要将这些类导入到我的项目中,这在旧设备上运行时会给我一个错误。我可以有条件地在android中导入类吗?我曾尝试在 Google 上查找某些内容,但我可能不知道要搜索什么才能返回有效结果。

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

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

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

4

2 回答 2

3

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

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

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

于 2013-02-21T23:39:26.567 回答
0

在不了解细节的情况下,您可能希望查看以下关注向后兼容性的内容;

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

于 2013-02-21T23:12:44.330 回答