通过Compatibility Package低版本使用Fragment

通过Compatibility Package低版本使用Fragment



 

android 3.0有很多新特性 其中有Fragment(碎片)通过这个可以实现View的模块化,特别在平板电脑中使用Fragment可以更加的灵活的布局,当我们想在3.0以下版本中使用Fragment !不过android提供了一种解决方式

---------Compatibility Package

Compatibility Package可以实现低版本的sdk使用高版本的一些特性

通过android-support-v4.jar 包实现(jar包位于android-sdk\extras\android\compatibility\v4下),在android-support-v4包中 有Fragment等类,在项目中build path一下android-support-v4.jar包!

使用:

在activity中引入Fragment有两种方式

1.xml:

 <fragment android:name="com.example.news.MyFragment1"

             android:id="@+id/viewer"   
             android:layout_weight="2"   
             android:layout_width="0dp"   
             android:layout_height="match_parent" />
 

2.代码:

 FragmentManager  fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.llFragmentList, new MyFragment3());
        fragmentTransaction.add(R.id.llFragmentDetail,new MyFragment4());
        fragmentTransaction.commit();

具体步骤:

1.新建一个类继承自Fragment

在Fragment中有个 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) ,这个方法就是的view就是显示在Activity中的view,

参数container指的是你要将Fragment添加到那个容器标签下

eg:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        LinearLayout layout = (LinearLayout)inflater.inflate(R.layout.myfragment1, container, false);
        Button btnAdd= (Button)layout.findViewById(R.id.btnAdd);
        btnAdd.setOnClickListener(this);
        Button btnRemove = (Button)layout.findViewById(R.id.btnRemove);
        btnRemove.setOnClickListener(this);
        Button btnReplace = (Button)layout.findViewById(R.id.btnReplace);
        btnReplace.setOnClickListener(this);
        return layout;
    }

2.新建一个类继承自FragmentActivity(必须继承自它)

然后通过

 FragmentManager  fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.llFragmentList, new MyFragment3());
        fragmentTransaction.add(R.id.llFragmentDetail,new MyFragment4());
        fragmentTransaction.commit();

的方式将Fragment添加到Activity中

Activity与Fragment通信的问题

Activity-->Fragment

通过fragmentManager.findFragmentById();或fragmentManager.findFragmentByTag()的方式查找到Fragment对象

Fragment-->Activity

在Fragment类中有一个 getActivity()方法,该方法获得的就是当前Fragment依赖的Activity实例

 

个人觉得Fragment类似ActivityGroup的效果,不过相对于ActivityGroup,Fragment提供了很多可以控制Fragment的方法

fragmentTransaction.add();

 fragmentTransaction.remove();

fragmentTransaction.replace();

transaction.addToBackStack(null); 等

附件下载:http://zhanhao.iteye.com/blog/1180795


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值