我知道 v4支持库可用于在旧的Android版本中实现已在更新版本中引入的内容,例如Fragments ..如果我们实现了一个使用< em> v4支持库显示对话框片段,例如,当它在ICS上运行时是否使用最新代码(即原始片段和新片段),还是仍然使用支持每个Android版本的代码?
是否可以在同一个应用程序中使用android.app.Fragment
类和android.support.v4.app.Fragment
类,如果我们在支持Fragment的版本上运行,则可以在运行时进行区分android或我们在导入 v4支持库时是否只需要使用支持类?
也许我错了,但在最近的平台上运行时,我似乎不想使用最新的代码。
坚持 Dialog Fragment 案例,您认为哪个更好:
1)使用 v4支持库,即在所有Android版本上使用兼容性代码
2)在API级别11或更高级别上运行时使用新的android.app.DialogFragment
,并使用showDialog
中弃用的onCreateDialog
和Activity
方法在API级别上运行时的类&lt; 11
正如我已经说过的,最好的一个恕我直言,但是(如果我错了,请纠正我)这不是一个可能的解决方案:
3)在API级别11或更高级别上运行时使用新的android.app.DialogFragment
类,并在API级别&lt;上运行时使用android.support.v4.app.DialogFragment
类11
如果我有点混乱,我很抱歉,我希望这个问题很清楚......
答案 0 :(得分:11)
当你在项目中使用android支持libary时,即使设备具有Android的兼容API级别,因此它不需要使用兼容性库,它仍将使用compatibilitybillity库中的方法。
修改强>
浏览它所声明的Android支持库v4代码(在android.support.v4.app.Fragment
类的评论中):
框架的静态库支持版本 android.app.Fragment。用于编写之前在平台上运行的应用程序 到Android 3.0。在Android 3.0或更高版本上运行时,这个 实施仍在使用;它不会尝试切换到 框架的实现。请参阅框架SDK文档以获取 课程概述。
链接here。
答案 1 :(得分:6)
如果我们实现一个使用v4支持库来显示Dialog Fragments的应用程序,例如,当它在ICS上运行时是否使用最新代码(即原始和更新的片段),或者是否仍然使用支持代码每个Android版本?
特别是片段,它总是使用自己的反向端口。在其他情况下,它可以传递给可用的本机实现。
有没有办法在同一个应用程序中使用android.app.Fragment类和android.support.v4.app.Fragment类,如果我们在启用Fragment的Android版本上运行或在运行时区分在导入v4支持库时,我们是否只需要使用支持类?
我会坚持支持课程。通过采用替代方法,您将增加大量额外的工作,但没有真正的好处。
也许我错了,但在最近的平台上运行时,我似乎不想使用最新的代码。
欢迎您的意见。对于像碎片这样的大型子系统,恕我直言的成本将超过收益。
坚持Dialog Fragment案例,您认为哪个更好:
最好的选择是根本不使用DialogFragment
,而是在不使用对话框的情况下找到实现目标的方法。
在您提出的三个选项中,暂时使用选项#1。一旦您认为可以放弃对Android 2.x的支持,您就可以切换到在整个应用中使用原生片段。
答案 2 :(得分:2)
您可以通过以下方式以编程方式查看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。 / p>