码迷,mamicode.com
首页 > 移动开发 > 详细

Android - Fragment(二)加载Fragment

时间:2015-08-06 00:03:22      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

Fragment加载方法

加载方法有两种,在xml文件中注册,或者是在Java代码中加载。

xml中注册

例如在fragment_demo.xml中定义

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <fragment
 8         android:id="@+id/main_fragment_up"
 9         android:name="com.rust.fragment.FirstFragment"
10         android:layout_width="match_parent"
11         android:layout_height="0dp"
12         android:layout_weight="1" />
13 
14     <fragment
15         android:id="@+id/main_fragment_bottom"
16         android:name="com.rust.fragment.SecondFragment"
17         android:layout_width="match_parent"
18         android:layout_height="0dp"
19         android:layout_weight="1" />
20 
21 </LinearLayout>

com.rust.fragment.SecondFragment 就是Fragment子类

在 SecondFragment.java 里复写onCreateView方法,并返回定义好的view

activity中直接加载即可

setContentView(R.layout.fragment_demo);

Java代码中加载

① 准备好Fragment xml布局文件

② 新建一个类,继承自Fragment;在这个类中找到Fragment布局文件

③ 在Activity中使用FragmentManager来操作Fragment

④ 别忘了commit

先自定义一个布局文件 fragment_first.xml 

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout 
 3 xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7     android:background="#0011ff" >
 8 
 9 <!-- <Button 
10     android:id="@+id/btn_fragment1_1"
11     android:layout_width="wrap_content" 
12     android:layout_height="wrap_content"
13     android:text="@string/btn_fragment1"
14     android:textSize="16sp"
15        />
16 <EditText
17     /> -->
18 
19 </LinearLayout>

新建一个类 FirstFragment.java ,继承自Fragment。复写onCreateView方法。在onCreateView方法中,可以操作Fragment上的控件。

 1 @Override
 2     public View onCreateView(LayoutInflater inflater, ViewGroup container,    Bundle savedInstanceState) {
 3         View rootView = inflater.inflate(R.layout.fragment_first, container,false);
 4 
 5 //    fragment_first是自定义好的布局
 6 
 7 //    如果此Fragment上放了控件,比如Button,Edittext等。可以在这里定义动作
 8 
 9         btn_fragment1_send = (Button) rootView.findViewById(R.id.btn_fragment1_1);
10 
11 //...
12         return rootView;
13     }

准备一个位置给Fragment,比如在 activity_main.xml 中用Framelayout来占位。

1     <FrameLayout
2 
3         android:id="@+id/layout_container1"
4         android:layout_width="match_parent"
5         android:layout_height="0dp"
6         android:layout_weight="4" >
7 
8     </FrameLayout>

在 MainActivity.java 里,先获得FragmentManager,得到FragmentTransaction。Fragment的添加删除等操作由FragmentTransaction来完成。

f1 = new FirstFragment();    //    获取实例

f2 = new SecondFragment();    //

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();

fragmentTransaction.add(R.id.layout_container1,f1);    //    添加

fragmentTransaction.replace(R.id.layout_container1,f1);    //    替换

// 或者也可以写成

fragmentTransaction.replace(R.id.layout_container1,new FirstFragment());

//                fragmentTransaction.addToBackStack(null);    //添加到返回栈,这样按返回键的时候能返回已添加的fragment

fragmentTransaction.commit();    //别忘了commit

//    移除操作 getFragmentManager().beginTransaction().remove(f1).commit();

相比与xml中注册,代码加载更为灵活一些。个人较为喜欢动态加载。

 

Android - Fragment(二)加载Fragment

标签:

原文地址:http://www.cnblogs.com/rustfisher/p/4705975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!