您的位置:首页 > 移动开发 > Android开发

关于android Fragment学习(入门篇)

2012-10-09 18:50 573 查看
这个的教程网上很多,对着SDK。有道,拣了一些好的博客琢磨了很久

关于这个类,类似的之前还有TabActivity,和ActivityGroup这两个,虽然android系统还支持使用,但是google在它的文档中明确支持不建议使用

Tab不用说,除了主页上的几个Activity外,t跳转后的其他页面返回限制很大,ActivityGroup还凑合着能用,不过估计效率啥的也不高于是被淘汰了.

Google推荐使用FragMents

SDK上说了支持3.0以上版本,看着看着发现自己手机才2.3.5,不过android提供了一种解决方式-Compatibility Package,通过它可以实现低版本的sdk使用高版本的一些特性,于是我使用了android-support-v4.jar,位于android-sdk-windows\extras\android\compatibility\v4下,这样就可以方便地使用FragMent

关于Fragment,简单地谈一下我的认识,首先他是 Activity的一部分,周期和的Activity同步, 我们可以这样理解

每一个Activity对应一个Layout,这个Layout很大(假定它叫做Layout_A),我们把一部分布局放在另一个Layout的XML中(假定这个是Layout_B),然后在 Layout_A中,将原先 Layout_B的存在位置处定义一个fragment

像这样,到这里,很多人可能会惊讶,那么这个fragment对应的layout要怎么找呢?????不急

大家可以看到,我在fragment中加了一个属性,android:name="sll.fragme.myFragments",这个是一个指明了包的类名。在这个类里我指明了上面的Layout_B

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment android:name="sll.fragme.myFragments"
android:id="@+id/fragment_myfragment"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="match_parent" />

<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />

</LinearLayout>
然后我们要添加一个类,类名和上面的对应,但是要继承Fragment

接下来需要重写以下函数(主要是第一个参数,其他若无特殊需求可以照搬)

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.main_top, container,false);
}

然后在那个需要嵌入Fragment的大的Activity中 加入以下函数(如果低版本中使用包,这个activity必须继承FragmentActivity||在3.0以上时,继承Activity也可以)

FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

myFragments myf=new myFragments();
fragmentTransaction.add(R.id.fragment_myfragment, myf);
fragmentTransaction.commit()

注:3.0的版本,第一句右边应该是 getFragmentManager()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: