Android学习笔记:(三)Fragment的使用

来源:互联网 发布:博纳文图拉数据 编辑:程序博客网 时间:2024/05/18 20:47

一、Fragment简介

  • 1、fragment是一种控制器对象,activity可以委派它完成一些任务,通常这些任务就是管理用户界面。

  • 2、
    Fragment生命周期

二、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中

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();        }    }}
0 0
原创粉丝点击