android 学习随笔二十三(动画:Fragment )

来源:互联网 发布:小型交易网站源码 编辑:程序博客网 时间:2024/05/25 19:59
  • Fragment
  • * 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容

    * 在一个Activity中切换多个界面,每个界面就是一个Fragment
    * Fragmnent的内容也是一个View对象


    * 生命周期方法跟Activity一致,可以理解把其为就是一个Activity
    * fragment切换时会销毁旧的,再创建新的
    * 定义布局文件作为Fragment的显示内容

    //此方法返回的View就会被显示在Fragment上
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    //用布局文件填充成一个View对象,返回出去,那么就显示在Fragment上了
    View v = inflater.inflate(R.layout.fragment01, null);
    return v; 
    }
    * 把Fragment显示至指定ViewGroup中

    //把fragment显示至界面
    //new出fragment对象
    Fragment01 fg = new Fragment01();
    FragmentManager fm = getFragmentManager();
    //开启事务
    FragmentTransaction ft = fm.beginTransaction();
    //把fragment对象显示到指定资源id的组件里面
    ft.replace(R.id.fl, fg);
    ft.commit();

    package com.itheima.fragment;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;import android.view.View;public class MainActivity extends Activity {    @Override     protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                showfagment01();    }    private void showfagment01() {        //1.创建fragment对象        Fragment01 fragment1 = new Fragment01();        //2.获取fragment管理器        FragmentManager fm = getFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment1);        //5.提交        ft.commit();    }        public void click1(View v){        showfagment01();    }    public void click2(View v){        //1.创建fragment对象        Fragment02 fragment2 = new Fragment02();        //2.获取fragment管理器        FragmentManager fm = getFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment2);        //5.提交        ft.commit();    }    public void click3(View v){        //1.创建fragment对象        Fragment03 fragment3 = new Fragment03();        //2.获取fragment管理器        FragmentManager fm = getFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment3);        //5.提交        ft.commit();    }        }
    MainActivity
    package com.itheima.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment01 extends Fragment {    //系统自动调用,返回的View对象作为Fragment的内容显示    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment01, null);        return v;    }}
    Fragment01
    package com.itheima.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment02 extends Fragment {    //系统自动调用,返回的View对象作为Fragment的内容显示    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment02, null);        return v;    }}
    Fragment02
    package com.itheima.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment03 extends Fragment {    //系统自动调用,返回的View对象作为Fragment的内容显示    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment03, null);        return v;    }}
    Fragment03
    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.itheima.fragment"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="11"        android:targetSdkVersion="17" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.itheima.fragment.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>
    AndroidManifest
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"     android:orientation="horizontal"    >        <FrameLayout         android:id="@+id/fl"        android:layout_weight="1"        android:layout_width="0dp"        android:layout_height="match_parent"        ></FrameLayout>        <LinearLayout        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:orientation="vertical"        >        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="界面1"            android:onClick="click1"            />        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="界面2"            android:onClick="click2"            />        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="界面3"            android:onClick="click3"            />        </LinearLayout></LinearLayout>
    activity_main
    <?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"     android:background="#00ff00"    >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="30sp"        android:text="这是plus的帽子的绿色"        /></LinearLayout>
    fragment01
    <?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"     android:background="#ff0000"    >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="30sp"        android:text="这是热情的红色"        /></LinearLayout>
    fragment02
    <?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"     android:background="#0000ff"    >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="30sp"        android:text="这是plus戴上帽子的心情的蓝色"        /></LinearLayout>
    fragment03

     

    • 生命周期

    * fragment切换时旧fragment对象会销毁,新的fragment对象会被创建

    •  低版本兼容

    * 在support-v4.jar包中有相关api,也就是说fragment可以在低版本模拟器运行

    package com.itheima.fragment;import android.os.Bundle;import android.annotation.SuppressLint;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.Menu;import android.view.View;public class MainActivity extends FragmentActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                showfagment01();    }    private void showfagment01() {        //1.创建fragment对象        Fragment01 fragment1 = new Fragment01();        //2.获取fragment管理器        FragmentManager fm = getSupportFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment1);        //5.提交        ft.commit();    }        public void click1(View v){        showfagment01();    }    public void click2(View v){        //1.创建fragment对象        Fragment02 fragment2 = new Fragment02();        //2.获取fragment管理器        FragmentManager fm = getSupportFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment2);        //5.提交        ft.commit();    }    public void click3(View v){        //1.创建fragment对象        Fragment03 fragment3 = new Fragment03();        //2.获取fragment管理器        FragmentManager fm = getSupportFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment3);        //5.提交        ft.commit();    }        }
    View Code
    package com.itheima.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment01 extends Fragment {    //系统自动调用,返回的View对象作为Fragment的内容显示    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment01, null);        return v;    }}
    Fragment01

     

    • Fragment和Activity传递数据
    package com.itheima.transmit;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {    private Fragment01 fragment1;    @Override     protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                showfagment01();    }    private void showfagment01() {        //1.创建fragment对象        fragment1 = new Fragment01();        //2.获取fragment管理器        FragmentManager fm = getFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment1);        //5.提交        ft.commit();    }        public void click1(View v){        showfagment01();    }    public void click2(View v){        //1.创建fragment对象        Fragment02 fragment2 = new Fragment02();        //2.获取fragment管理器        FragmentManager fm = getFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment2);        //5.提交        ft.commit();    }    public void click3(View v){        //1.创建fragment对象        Fragment03 fragment3 = new Fragment03();        //2.获取fragment管理器        FragmentManager fm = getFragmentManager();        //3.开启事务        FragmentTransaction ft = fm.beginTransaction();        //4.显示fragment        //arg0:设置把fragment显示在哪个容器中        ft.replace(R.id.fl, fragment3);        //5.提交        ft.commit();    }        public void click4(View v){        EditText et_main = (EditText) findViewById(R.id.et_main);        String text = et_main.getText().toString();        fragment1.setText(text);    }        public void setText(String text){        TextView tv_main = (TextView) findViewById(R.id.tv_main);        tv_main.setText(text);    }    }
    MainActivity
    package com.itheima.transmit;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView.FindListener;import android.widget.TextView;public class Fragment01 extends Fragment {    private TextView tv;    //系统自动调用,返回的View对象作为Fragment的内容显示    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment01, null);        tv = (TextView) v.findViewById(R.id.tv_fragment1);        return v;    }        public void setText(String text){        tv.setText(text);    }}
    Fragment01
    package com.itheima.transmit;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;public class Fragment03 extends Fragment implements OnClickListener {    private EditText et;    //系统自动调用,返回的View对象作为Fragment的内容显示    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment03, null);        Button bt_fragment03 = (Button) v.findViewById(R.id.bt_fragment03);        et = (EditText) v.findViewById(R.id.et_fragment03);        bt_fragment03.setOnClickListener(this);        return v;    }    @Override    public void onClick(View v) {        String text = et.getText().toString();        ((MainActivity)getActivity()).setText(text);    }        }
    Fragment03
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"     android:orientation="horizontal"    >        <FrameLayout         android:id="@+id/fl"        android:layout_weight="1"        android:layout_width="0dp"        android:layout_height="match_parent"        ></FrameLayout>        <LinearLayout        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:orientation="vertical"        >        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="界面1"            android:onClick="click1"            />        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="界面2"            android:onClick="click2"            />        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="界面3"            android:onClick="click3"            />        <EditText             android:id="@+id/et_main"            android:layout_width="match_parent"            android:layout_height="wrap_content"            />        <Button             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="提交"            android:onClick="click4"            />        <TextView             android:id="@+id/tv_main"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />        </LinearLayout></LinearLayout>
    activity_main
    <?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"     android:background="#00ff00"    >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="30sp"        android:text="这是plus的帽子的绿色"        />    <TextView         android:id="@+id/tv_fragment1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        /></LinearLayout>
    fragment01
    <?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"     android:background="#0000ff"    >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="30sp"        android:text="这是plus戴上帽子的心情的蓝色"        />    <EditText         android:id="@+id/et_fragment03"        android:layout_width="match_parent"        android:layout_height="wrap_content"        />    <Button         android:id="@+id/bt_fragment03"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="提交"        /></LinearLayout>
    fragment03

     

     

    0 0
    原创粉丝点击