标签:
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