Android v4是否支持库在可用时使用新类?

Android v4是否支持库在可用时使用新类?,android,android-fragments,android-support-library,android-dialogfragment,Android,Android Fragments,Android Support Library,Android Dialogfragment,我知道v4支持库可以用于在旧的android版本中实现在较新版本中引入的东西,例如片段。。例如,如果我们实现了一个使用v4支持库来显示对话框片段的应用程序,那么当它在ICS上运行时,它是使用最新的代码(即原始和更新的片段),还是仍然使用每个android版本的支持代码 是否有一种方法可以在同一个应用程序中同时使用android.app.Fragment类和android.support.v4.app.Fragment类,在运行时区分我们是运行在启用了片段的android版本上,还是在导入v4支持

我知道v4支持库可以用于在旧的android版本中实现在较新版本中引入的东西,例如片段。。例如,如果我们实现了一个使用v4支持库来显示对话框片段的应用程序,那么当它在ICS上运行时,它是使用最新的代码(即原始和更新的片段),还是仍然使用每个android版本的支持代码

是否有一种方法可以在同一个应用程序中同时使用
android.app.Fragment
类和
android.support.v4.app.Fragment
类,在运行时区分我们是运行在启用了片段的android版本上,还是在导入v4支持库时只需要使用支持类

也许我错了,但在我看来,在最近的平台上运行时不使用最新的代码并不是一个好主意

坚持对话片段案例,您认为哪一种更好:

1)使用v4支持库,即在所有android版本上使用兼容代码

2)在API级别11或更高级别上运行时,请使用新的
android.app.DialogFragment
,在API级别11或更高级别上运行时,请使用
Activity
类中已弃用的
showDialog
onCreateDialog
方法

正如我已经说过的,最好的解决方案如下,但是(如果我错了,请纠正我),这不是一个可能的解决方案:

3)在API级别11或更高级别上运行时,请使用新的
android.app.DialogFragment
类;在API级别<11时,请使用
android.support.v4.app.DialogFragment


很抱歉,如果我有点困惑,我希望问题很清楚。

当您在项目中使用android支持库时,即使设备具有android的兼容API级别,因此不需要使用兼容库,它仍将使用兼容库中的方法

编辑

浏览其声明的Android支持库v4代码(在
Android.support.v4.app.Fragment
class的注释中):

框架的静态库支持版本 android.app.Fragment。用于编写在以前的平台上运行的应用程序 到安卓3.0。在Android 3.0或更高版本上运行时 实施仍然在使用中;它不会尝试切换到 框架的实施。有关详细信息,请参阅框架SDK文档 课程概述


链接。

您可以通过以下链接以编程方式查看API级别:

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.FROYO){
// Do something for froyo and above versions
} else{
// do something for phones running an SDK before froyo
}
然后,您可以通过在代码中写入类的完整名称来复制代码以使用所需的类,即android.app.DialogFragment或android.support.v4.app.Fragment,而不仅仅是DialogFragment

例如,如果我们实现了一个使用v4支持库来显示对话框片段的应用程序,那么当它在ICS上运行时,它是使用最新的代码(即原始和更新的片段),还是仍然使用每个android版本的支持代码

特别是对于片段,它总是使用自己的后端口。在其他情况下,它可能会传递到本机实现(如果可用)

是否有一种方法可以在同一个应用程序中同时使用android.app.Fragment类和android.support.v4.app.Fragment类,在运行时区分我们是运行在启用了片段的android版本上,还是在导入v4支持库时只需要使用支持类

我会坚持参加支持班。如果采用其他方法,您将增加大量额外的工作,而没有任何实际的好处

也许我错了,但在我看来,在最近的平台上运行时不使用最新的代码并不是一个好主意

欢迎你发表意见。对于更大的子系统(如碎片),IMHO的成本将超过收益

坚持对话片段案例,您认为哪一种更好:

最好的选择是根本不使用
DialogFragment
,而是找到一种不用对话框就能完成所需任务的方法


在您介绍的三个选项中,暂时使用选项1。一旦您觉得可以放弃对Android 2.x的支持,就可以在整个应用程序中使用本机片段。

运行时的条件检查对我来说不是问题,但我不确定在导入v4支持库时,您是否仍然可以使用标准库中定义的相同类,但可能我错了。。我必须试一试。。可能唯一的缺点是您必须始终使用完全限定的类名,即,
android.app.DialogFragment
,因为在新的和支持包中都存在相同的类。您能否提供您的答案所依赖的源代码?谢谢。@kilaka我已经更新了我的答案。我提供了我阅读它的链接。希望有帮助!