2012年5月4日星期五

怎样解决Android类中TabActivity已经deprecated的问题

在Android官网中有一个做Tab的sample,使用了TabActivity这个类。但在实际操作过程中,你会发现这个类现在已经被官方弃用了,程序中会有如下提示:

This class is deprecated.
New applications should use Fragments instead of this class; to continue to run on older devices, you can use the v4 support library which provides a version of the Fragment API that is compatible down to DONUT.

再按照官网给出的代码运行这个本该含有几个Tab的项目时,几个Activity变成了几个独立的应用,而不是在一个应用的几个Tab里。

问题看上去是出在这个TabActivity上。(花了两天才发现不是这个问题,是在Android Manifest.xml中在每一个Activity中都加入了<intent-filter/>,修改了后只在主Activity中加这个tag就好了。)

  • 于是先按照程序中的提示加入@SuppressWarnings("deprecation"),以便漠视Warning。再运行——当然是没效果。       
                                                                                                     
  • 接着打算按照上面的建议,用Fragment来代替TabActivity,那就得先装上这个最近才更新的包android-support-v4.jar,步骤如下
     1.在Eclipse中选Windows->Android SDK Manager,选择Repository,找到最下面的Android    Support,点击安装这个package。
         2.装完之后,在你的project里面建立一个叫libs的文件夹,路径为XXXXX/libs,和src、res等文件夹并列的。
         3.在android-sdks/extras/android/support/v4中找到android-support-v4.jar,复制到步骤2中的libs里面去。
         4.在Eclipse的Package Explorer中找到XXXXX/libs/android-support-v4.jar,按右键点击Build path->Add to Build Path.

        好了,现在就可以用这个更新的包里面的东东了,比如我们需要的Fragment这个类。然后我们要来看看FragmentTab.java是怎么用的。

  • 除了这种方法呢,还可以直接让原本继承TabActivity的类来继承爷爷Activity,具体怎么做在下面两个帖子里有介绍:
           http://stackoverflow.com/questions/3163884/android-tabhost-without-tabactivity
           http://wazai.net/2109

没有评论:

发表评论