一、Fragment简介
1、fragment是一种控制器对象,activity可以委派它完成一些任务,通常这些任务就是管理用户界面。
2、
二、Fragment的使用
1、创建类继承Fragment
- 1、最好继承android.support.v4.app.Fragment中的Fragment,因为能兼容更多的adroid版本,android.app.Fragment中也有Fragment。
package com.example.simpletest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
public class MainFragment extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//并没有生成视图
}
}
- 2、生成Fragment中的视图,要在onCreateView这个生命周期创建视图。
/*
*MainFragment.java
*/
public class MainFragment extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
{
//第一个参数传入layout资源ID,第二个参数指定父视图,第三个
//参数告知布局生成器是否将生成的视图添加给父视图
View v = inflater.inflate(R.layout.fragment_main, parent, false);
return v;
}
}
- 3、fragment的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</LinearLayout>
2、创建托管此Fragment的activity
- 1、主视图xml中要创建FragmentLayout,相当于放一个占位符在主视图中,然后可以添加Fragment的视图到这个占位符的位置。
<!-- activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3、activity托管Fragment
- 1、要将Fragment添加到FragmentManager中
2、fragmentManager作用:
1)管理Fragment队列
2)Fragment事务回退栈3、
package com.example.simpletest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得FragmentManager
FragmentManager fm = getSupportFragmentManager();
//获得主视图中的Fragment,如果在FragmentManager中已经存在则获取,不存在就返回Null
Fragment fragment = fm.findFragmentById(R.id.main_fragment);
if(fragment == null)
{
//创建fragment
fragment = new MainFragment();
//添加fragment到fragmentManager中,并commit
//beginTransaction()创建并返回FragmentTransaction实例
//容器视图资源id R。id,mainFragment用处:
//1.fragment在fragmentManager中的唯一标识符
//2.告知fragmentManager fragment视图应该出现在activity的什么位置
fm.beginTransaction().add(R.id.main_fragment, fragment).commit();
}
}
}