Fragment的简单实例

Fragment出现于android3.0,在现在很多的app上都有使用。它使用户体验更好。可以完全替代TabHost,现在通过一个简单的实例来快速入门。

这里主界面的布局文件,Fragment是放在FrameLayout中的。

<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=".HomeActivity">

    <FrameLayout
        android:id="@+id/fl_home"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></FrameLayout>

    <View
        android:layout_width="wrap_content"
        android:layout_height="1dp"
        android:layout_marginBottom="5dp"
        android:background="#000000"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮一"
            android:background="#aa0000"
            android:onClick="click1"
            android:layout_marginLeft="10dp"
            android:id="@+id/bt1_home"
            android:textSize="30sp"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮二"
            android:onClick="click2"
            android:background="#aa00bb"
            android:layout_centerInParent="true"
            android:id="@+id/bt2_home"
            android:textSize="30sp"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮三"
            android:onClick="click3"
            android:background="#aa00ff"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"
            android:id="@+id/bt3_home"
            android:textSize="30sp"/>
    </RelativeLayout>
</LinearLayout>

然后我们写自己的Fragment01类,当然要继承Fragment。这里只展示Fragment1。这里需要注意的是 我用的android.app包下的Fragment。我们去实现它的onCreatView方法,方法返回的是你Fragment展示的内容,很像ListView。所以,你要再去创建布局文件,这里就不赘述了。

package com.example.administrator.fragmentdemo;

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

/**
 * Created by Administrator on 2015/8/13.
 */
public class Fragment01 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_fragment1,null);
        final EditText fg1_et = (EditText) view.findViewById(R.id.fg1_et);
        Button fg1_bt = (Button) view.findViewById(R.id.fg1_bt);

        fg1_bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((HomeActivity)getActivity()).setText(fg1_et.getText().toString().trim());
            }
        });
        return view;
    }
}

现在需要做的事是把自己Fragment显示在activity中,做法很简单

package com.example.administrator.fragmentdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;


public class HomeActivity extends Activity {

    private TextView home_tv =null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
               
        home_tv = (TextView)findViewById(R.id.home_tv);
         //这里我们默认显示的是Fragment01
        Fragment01 f1 = new Fragment01();
        //得到FragmentManage进行后续操作
        android.app.FragmentManager fm=  getFragmentManager();
        //这里开启事务,貌似很奇葩的做法,但是不得不这样做。google就是这么设计的
        android.app.FragmentTransaction ft = fm.beginTransaction();
        //第一个参数是容器的id,也就是要把Fragment放在哪。这里就是我们在布局文件中写的FrameLayout
        ft.replace(R.id.fl_home, f1);
        //提交事务
        ft.commit();

    }


    public void click1(View view){
        Fragment01 f1 = new Fragment01();
        android.app.FragmentManager fm=  getFragmentManager();
        android.app.FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_home, f1);
        ft.commit();
    }
    public void click2(View view){
        Fragment02 f2 = new Fragment02();
        android.app.FragmentManager fm=  getFragmentManager();
        android.app.FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_home,f2);
        ft.commit();
    }
    public void click3(View view){
        Fragment03 f3 = new Fragment03();
        android.app.FragmentManager fm=  getFragmentManager();
        android.app.FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fl_home,f3);
        ft.commit();
    }
    
 }

你可能感兴趣的:(Fragment)