在Android 3.0及以上版本中,如何使用android.app.Fragment和ViewPager?

7
我正在开发Android应用,并使用android:minSdkVersion="11"。据我所知,ViewPager是在兼容库中实现的。我已经成功地通过添加android-support-v4.jar库使其在我的应用程序中工作,但是现在我被迫使用android.support.v4.app.FragmentActivity,因为我需要getSupportFragmentManager()来获取FragmentPagerAdapter,而不是新的android.app.Activity的getFragmentManager()。
此外,我需要使用android.support.v4.app.Fragment而不是android.app.Fragment。尽管它有效,但我绝对不喜欢这种方法。它破坏了应用程序的设计,我根本不想在我的API Level 11项目中使用兼容库。
有没有其他更本地的方法在Honeycomb+应用程序中使用ViewPager?

接受的答案现在应该更改,因为v13已经发布。 - theblang
2个回答

13

可能在回答被接受时情况不是这样的,但在示例代码中有import android.support.v13.app.FragmentStatePagerAdapter;。 如果您使用support-v13库,则构造函数将采用非支持版本的FragmentManager。请注意,ViewPager仍必须来自v4。

我还要补充的是,v4表示Android版本4+(Donut 1.6)的支持库,v13表示Android版本13+(Honeycomb 3.2)的支持库。 至少对我来说,并不是很明显的一个事实。这意味着在v4 / v13中使用的API与该点之前的所有版本兼容。


8

FragmentPagerAdapter 复制到你的代码中并修改它以使用 android.app.Fragment,等等。或者自己实现一个 PagerAdapter,它完全不依赖于片段。


你的意思是我可以修改ViewPager代码后在我的应用程序中使用它吗?我从哪里获取兼容库的源代码?这是Honeycomb的唯一方式吗?没有更本地或通用的方法了吗? - morphium
下载包含源代码。如果您是从SDK管理器中安装的,它将位于$SDK_ROOT/extras/android/compatibility/v4/src中。不知道您所说的“本地或通用”是什么意思,但ViewPager不是Android SDK的一部分,您必须将其添加到您的项目中才能使用它,可以是库(jar)形式或源代码形式。 - Nikolay Elenkov
我已经复制了FragmentPagerAdapter并使其与android.app.Fragment一起工作。但是这种方法仍然假定我必须使用android-support-v4.jar库。这真的是正常的方法吗? - morphium
定义正常 :) 正如我所说,ViewPager不在SDK中,因此您必须将其添加到项目中。要么将所有相关代码复制到项目中,要么添加android-support-v4.jar(就像您现在正在做的那样)。实际上没有其他使用它的方法。使用jar文件稍微好一些,因为当发布更新时,您可以简单地替换它。 - Nikolay Elenkov
通常情况下,我正在尝试描述一种在不同应用程序中已经得到良好推荐的方法。对于最小SDK<11的应用程序,只需使用android-support-v4.jar即可。而似乎蜂窝网络+应用程序的唯一选择就是我们在这里所描述的混乱 :) 至少目前是这样。非常感谢您的帮助。顺便问候一下东京,来自上海的我。 - morphium
尝试将FragmentPagerAdapter移植到我的项目中,并将Fragment等导入更改为android.app.*,但这并没有起作用,因为FragmentPagerAdapter调用了一些仅存在于API级别14中的方法(例如:FragmentTransaction.attach或Fragment.setMenuVisibility)。 :( - BoD

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