android 63 Fragment

#Fragment 是3.0平板才引入进来的,3.0之后就加入了Fragment。原来是一个屏幕就是一个Activity,
>片段,碎片

1. 定义某一个片段的界面 继承Fragment类
        public class BlueToothFragment extends Fragment {}
2. 重写Fragment里面的方法
        显示Fragment的ui,把布局文件转化成view对象
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            return inflater.inflate(R.layout.blue_tooth_layout, null);
        }
3. 获取Fragment管理器
        fm = getFragmentManager();
4. 动态的修改界面
        f1 = new BlueToothFragment();//先把要显示的f1new出来
        FragmentTransaction ft = fm.beginTransaction();//开启事务
        ft.replace(R.id.fl_container, f1);
        ft.commit();//保证了 要么同时成功,要么同时失败

主页面:

 

<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:orientation="vertical"       垂直排列
    tools:context=".MainActivity" >

    <FrameLayout
        android:id="@+id/fl_container"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:layout_height="0dip" >
    </FrameLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#22000000"
        android:orientation="horizontal" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="setting01"
            android:text="蓝牙设置" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="setting02"
            android:text="声音设置" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="setting03"
            android:text="显示设置" />
    </LinearLayout>

</LinearLayout>

3个fragment:

蓝牙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/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是蓝牙设置"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RadioButton" />

    <ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ToggleButton" />

</LinearLayout>

显示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/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是显示设置"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CheckBox" />

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RadioButton" />

</LinearLayout>

声音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/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是声音设置"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CheckBox" />

</LinearLayout>

主Activity:

package com.itheima.fragementdemo;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {
    private FragmentManager fm;//管理所有Fragment,更新页面的时候要么同时更新成功要么同时更新失败所以有事物,
    BlueToothFragment f1;
    ShowFragment f3;
    SoundFragment f2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fm = getFragmentManager();
        initFragment();
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f1);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }

    private void initFragment() {
        f1 = new BlueToothFragment();//Fragment是直接new出来的
        f2 = new SoundFragment();
        f3 = new ShowFragment();
    }

    //蓝牙点击事件
    public void setting01(View view) {
        //事物开始的时候实例化ft,事物结束的时候提交事物,提交后事物就过期了,所以每次都要初始化ft
        FragmentTransaction ft = fm.beginTransaction();//
        ft.replace(R.id.fl_container, f1);
        ft.commit();//保证了 要么同时成功,要么同时失败,保证了页面不花屏。
    }
    //声音点击事件
    public void setting02(View view) {
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f2);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }
    //显示点击事件
    public void setting03(View view) {
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f3);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }

}

3个fragment java代码

蓝牙:

package com.itheima.fragementdemo;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class BlueToothFragment extends Fragment {
    //显示Fragment的ui的,不需要在清单文件配置任何内容
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.blue_tooth_layout, null);
    }
}


声音

package com.itheima.fragementdemo;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class SoundFragment extends Fragment {
    //显示Fragment的ui的
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.sound_layout, null);
    }
}


显示

package com.itheima.fragementdemo;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ShowFragment extends Fragment {
    //显示Fragment的ui的
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.show_layout, null);
    }
}

 

##Fragment的向下兼容,兼容低版本
>使用support-v4的jar包
>1. MainActivity extends FragmentActivity
>2. 所有的fragment的导包, android.support.v4.app.Fragment
>3. getSupportFragmentManager();
>4. 注意两个导包
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

package com.itheima.fragementdemo;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;

public class MainActivity extends FragmentActivity {
    private FragmentManager fm;
    BlueToothFragment f1;
    ShowFragment f3;
    SoundFragment f2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //为了向下版本兼容采用v4包里面的FragmentManager
        fm = getSupportFragmentManager();
        initFragment();
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f1);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }

    private void initFragment() {
        f1 = new BlueToothFragment();
        f2 = new SoundFragment();
        f3 = new ShowFragment();
    }

    //蓝牙
    public void setting01(View view) {
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f1);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }
    //声音
    public void setting02(View view) {
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f2);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }
    //显示
    public void setting03(View view) {
        //事务的概念
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_container, f3);
        ft.commit();//保证了 要么同时成功,要么同时失败
    }

}

实现效果:

posted @ 2015-10-28 00:06  无天666  阅读(236)  评论(0编辑  收藏  举报