支持 Android API 版本低于 11 的 MultiChoiceModeListener

3

我有一个使用v4支持库实现了MultiChoiceModeListener接口的片段。但是我在清单文件中定义了android:minSdkVersion="7"。因此,我的片段类显示以下错误:

Class requires API level 11 (current min is 7): android.widget.AbsListView.MultiChoiceModeListener

一个解决方案是使用 @SuppressLint("NewApi")。尽管应用程序可以成功编译,但我猜测它会导致在旧版 Android 中崩溃。

那么,在旧版 Android 中不让应用程序失败,同时仍然为新版本实现MultiChoiceModeListener接口,是否有可能?还是我需要在这些行中有两个不同版本的应用程序或片段之类的东西?


由于该API属于11级以上,因此您只能在较低版本上删除使用它实现的任何功能或提供自己的实现。MultiChoiceModeListenerActionMode.Callback的自定义实现,对于较低的平台版本,自己实现它应该不难。 - user
这正是我正在寻找的。我该如何删除旧版本的功能,即如何告诉应用程序忽略接口实现? - faizal
你是否只想在低版本上什么都不做,放弃当前在该监听器上实现的所有功能?如果是,则只需将MultiChoiceModeListener设置为ListView中的一个if子句(您可能还需要在该类上使用@TargetAPI注释)。 - user
明白了,谢谢。 - faizal
1个回答

0
那么,在旧版Android中,是否有可能不让应用程序失败,同时在新版本中实现MultiChoiceModeListener接口呢?
MultiChoiceModeListener是一个类,与ActionBar API一起在HoneyComb(API级别11)中引入。不幸的是,与ActionBar不同,这个类没有支持库中的对应项,无法在较低版本的Android上提供其功能。你只有两个选择,要么放弃该功能,要么在不支持它的较低版本上提供自己的类似实现。
要在较低版本上放弃该功能,您只需要使用if语句包装设置侦听器的代码即可:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    // we are on HoneyComb or above so its safe to use
    listView.setMultichoiceModeListener(...);
}

但是许多应用程序在API <11中提供了多选项。这怎么可能?请建议一些方法,我想在我的API<11中使用multiChoiceModeListener。 - Apurva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接