编程-安卓,actionbar的onTanSelected方法不支持v4包的类,怎么解决?

问题描述

安卓,actionbar的onTanSelected方法不支持v4包的类,怎么解决?

安卓ActionBar.TabListener的onTabSelected方法不支持v4包的FragmentTransaction,怎么解决

在ActionBar里添加Tab时,class TabListener implements ActionBar.OnTabListener{ }
里面要复写一个onTabSelected(Tab tab,FragmentTransaction ft){}方法,可是这方法的ft只能用android.app.包里的,用v4包的会报错,可是ft.add()时要用到fragment,把fragment也改成旧的app包的也能解决,但好像有的地方fragment只能用v4包的,那么这时onTabSelected()该怎么复写?

例如FragmentActivity,DialogFragment,ListFragment那些都要v4包才能用,难道我把添加在这些tab下的fragment用旧的app包,那些用v4包的?但这样搞了我觉得很容易出问题啊,求怎么解决?ActionBar.onTabSelected(ActionBar.Tab tab,FragmentTrnsaction ft)这里方法里的ft不支持v4包的FragmentTransaction的问题

解决方案

http://blog.csdn.net/ysh06201418/article/details/46373001

解决方案二:

大家好,我是楼主,我试着换了一下写法,大家来看看我这样的改进的写法好不好,有没有什么需要改进的地方:

原来的写法(因为onTabListener不支持v4包的FrgmentTransaction,所以这里所有fragment都是用旧的包的,这种也是网上见的最多的写法)

public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}

然后,我现在采用的写法,这样能用v4包,也是参考了网上的:
public void onTabSelected(Tab tab,FragmentTransaction ft)
{
switch(tab.getPosition())
{
case 0:
if(f1==null) f1=new Fragment1();
getSupportFragmentManager().beginTransaction().replace(R.id.content, f1).commit();
break;
case 1:
if(f2==null) f2=new Fragment2();
getSupportFragmentManager().beginTransaction().replace(R.id.content, f2).commit();
break;
case 2:
if(f3==null) f3=new Fragment3();
getSupportFragmentManager().beginTransaction().replace(R.id.content, f3).commit();
break;
}
}

大家看看我现在用的这种写法有没有什么改进的地方?

解决方案三:

包直接有冲突之外或引入问题

时间: 2024-12-11 11:30:53

编程-安卓,actionbar的onTanSelected方法不支持v4包的类,怎么解决?的相关文章

编程-安卓,SwipeRefreshLayout多滑几次就报错,求解决方法

问题描述 安卓,SwipeRefreshLayout多滑几次就报错,求解决方法 先上一张logcat图: 这里有个错误应该是在子线程操作ui线程了,但是我应该是用了handler的,如下: 多滑几次swipeRefreshLayout就会报错(滑的次数随机,滑1次就出错也试过) 请问为什么会这样?应该怎么解决? 解决方案 瞪着眼睛看了会..你的代码习惯要改一改.你的handler要么放在主线程中实例化,要么实例化时调用有参构造器,传参:Looper.getMainLooper().总结:你当前的

Android编程获取GPS数据的方法详解_Android

本文实例讲述了Android编程获取GPS数据的方法.分享给大家供大家参考,具体如下: GPS是Android系统中重要的组成部分,通过它可以衍生出众多的与位置相关的应用. Android的GPS有一个专门的管理类,称为LocationManager,所有的GPS定位服务都由其对象产生并进行控制. 首先需要明确的是,LocationManager类的对象获取并不是直接创建的,而是由系统提供的,具体来说,通过如下方法,为一个LocationManager对象建立一个对象引用: 复制代码 代码如下:

Android编程实现手机拍照的方法详解_Android

本文实例讲述了Android编程实现手机拍照的方法.分享给大家供大家参考,具体如下: 今天弄了差不多一天手机拍照,后来,边弄边想,而且现在也不知道自己知道的这些对不对,首先,如果使用此种方式拍照的话,程序在模拟器中,刚启动就会出问题,不知道什么原因,猜可能是因为是模拟器的原因,目前没有手机进行测试,这一些无法解释,代码如下: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(in

android编程实现图片库的封装方法_Android

本文实例讲述了android编程实现图片库的封装方法.分享给大家供大家参考,具体如下: 大家在做安卓应用的时候 经常要从网络中获取图片 都是通过URL去获取 可是如果本地有图片数据 从本地获取数据不更加快一些 自己在工作中遇到这个问题 所以采用了一个URL和本地图片的一个映射关系 先从本地区获取 假如本地没有再从网络中获取 本方法考虑到多线程问题 欢迎大家一起共同探讨! public class PictureLibrary { /* * 图片库的操作 */ File file; URL url

Android编程中黑名单的实现方法_Android

本文实例讲述了Android编程中黑名单的实现方法.分享给大家供大家参考,具体如下: 说明:由于挂断电话android   api不是对外开放的,所以需要使用反射的方法得到拨打电话的服务. 1.将android源代码中的"aidl"文件拷贝到项目中 这样项目中会生成两个包:android.telephony:此包中文件为:NeighboringCellInfo.aidl com.android.internal.telephony;此包中文件为:ITelephony.aidl 2.通过

Android编程之简单计时器实现方法_Android

本文实例讲述了Android编程之简单计时器实现方法.分享给大家供大家参考,具体如下: 这里利用ContextMenu(上下文菜单),Chronometer实现简单计数器. Main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android

Android编程之简单计时器实现方法

本文实例讲述了Android编程之简单计时器实现方法.分享给大家供大家参考,具体如下: 这里利用ContextMenu(上下文菜单),Chronometer实现简单计数器. Main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android

android编程实现图片库的封装方法

本文实例讲述了android编程实现图片库的封装方法.分享给大家供大家参考,具体如下: 大家在做安卓应用的时候 经常要从网络中获取图片 都是通过URL去获取 可是如果本地有图片数据 从本地获取数据不更加快一些 自己在工作中遇到这个问题 所以采用了一个URL和本地图片的一个映射关系 先从本地区获取 假如本地没有再从网络中获取 本方法考虑到多线程问题 欢迎大家一起共同探讨! public class PictureLibrary { /* * 图片库的操作 */ File file; URL url

Android编程实现手机拍照的方法详解

本文实例讲述了Android编程实现手机拍照的方法.分享给大家供大家参考,具体如下: 今天弄了差不多一天手机拍照,后来,边弄边想,而且现在也不知道自己知道的这些对不对,首先,如果使用此种方式拍照的话,程序在模拟器中,刚启动就会出问题,不知道什么原因,猜可能是因为是模拟器的原因,目前没有手机进行测试,这一些无法解释,代码如下: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(in