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();//保证了 要么同时成功,要么同时失败
    }

}
时间: 2024-10-01 03:19:45

android 63 Fragment的相关文章

android之Fragment基础详解(一)

一.Fragment的设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互. 针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的.难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊.Fragment的出现就是为了解决这样的问题.你可以把Frag

[转]Android:Activity+Fragment及它们之间的数据交换(一)

2014-05-18         来源:Android:Activity+Fragment及它们之间的数据交换(一)   简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与 Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换 多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式.

Android中Fragment和ViewPager那点事儿

在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragment与Activity之间的交互(两种实现方式)>中我们介绍了ViewPager以及Fragment各自的使用场景以及不同的实现方式. 那如果将他们两结合起来,会不会擦出点火花呢,答案是肯定的.之前在介绍ViewPager时,我们实现了多个ImageView的切换,并配合更新导航原点的状态.那我们现在

Android之fragment点击切换和滑动切换结合

学了一小段时间的Android,主要接触的是UI设计,打交道最多莫过于fragment了吧.在Android3.0引入了fragment的概念后,几乎在所以的Android的应用中都可以看见其身影,已经有很多前辈高人都已经详细介绍过fragmrnt,我这里就不多说什么了. 这里本来是想模仿一下微信的切换效果,怎奈水平不足,这里就献丑贴出半成品的代码,希望有大神能指点一下.废话不多说,上代码.先从简单的开始吧,这里是我一共用了3个fragment,这里就只贴出第一个的fragment的布局,别的两

android基础----&gt;Fragment的使用

碎片(Fragment)是一种可以嵌入在活动当中的UI 片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛. Fragment的基础例子 一.增加Fragment,another_right_fragment.xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

Android——ViewPager+Fragment+ListView之间

Android--ViewPager+Fragment+ListView之间 <span style="font-size:18px;">package com.example.jreduch05; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.A

[转]android.support.v4.app.Fragment和android.app.Fragment区别

1.最低支持版本不同 android.app.Fragment 兼容的最低版本是android:minSdkVersion="11" 即3.0版 android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion="4" 即1.6版 2.需要导jar包 fragment android.support.v4.app.Fragment 需要引入包android-support-v4.jar 3.在Activity

Android之fragment生命周期解析

上篇讲到了Fragment的基础应用,现在给大家演示一下Fragment的生命周期是什么样子的.关于Fragemnt的基础应用,请见http://blog.csdn.net/jiapeng2b/article/details/46919859. 一.首先,我们先看一下Fragment的生命周期 跟Activity生命周期的对比 Activity直接影响它所包含的fragment的生命周期,所以对activity的某个生命周期方法的调用也会产生对fragment相同方法的调用.例如:当activi

Android 隐藏Fragment

1.隐藏Fragment FragmentManager fManager = getFragmentManager(); fManager.beginTransaction() .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out) .show(yourFragmentName).commit(); fManager.beginTransaction().remove(mMangerFragme