Fragment详解(2)

来源:互联网 发布:如何优化供应商 编辑:程序博客网 时间:2024/06/11 06:21

上次Fragment详解(1)介绍了fragment但是没有说到实际使用,这次带来点实用的东西。

这里写图片描述

这个是activity的代码,里边添加了5个相同的fragment,背景色改变了一下。

public class MainActivity extends FragmentActivity implements OnClickListener {    Button btn1;    Button btn2;    Button btn3;    Button btn4;    Button btn5;    Frag frag1, frag2, frag3, frag4, frag5;    FragmentManager manager;    FragmentTransaction transa;    @Override    protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    // 初始化控件    initView();    // 获得fragmentManagerF    manager = getSupportFragmentManager();    //第一次初始化显示的frag    fragShow(1);    }    private void initView() {    btn1 = (Button) findViewById(R.id.btn1);    btn2 = (Button) findViewById(R.id.btn2);    btn3 = (Button) findViewById(R.id.btn3);    btn4 = (Button) findViewById(R.id.btn4);    btn5 = (Button) findViewById(R.id.btn5);    btn1.setOnClickListener(this);    btn2.setOnClickListener(this);    btn3.setOnClickListener(this);    btn4.setOnClickListener(this);    btn5.setOnClickListener(this);    }//统一的fragment显示管理    private void fragShow(int num) {    //获得FragmentTransaction     transa = manager.beginTransaction();    //隐藏之前显示的fragment    fragHode();    switch (num) {    case 1:        if (frag1 != null) {        transa.show(frag1);        } else {        frag1 = new Frag(1);        transa.add(R.id.flay, frag1);        }        break;    case 2:        if (frag2 != null) {        transa.show(frag2);        } else {        frag2 = new Frag(2);        transa.add(R.id.flay, frag2);        }        break;    case 3:        if (frag3 != null) {        transa.show(frag3);        } else {        frag3 = new Frag(3);        transa.add(R.id.flay, frag3);        }        break;    case 4:        if (frag4 != null) {        transa.show(frag4);        } else {        frag4 = new Frag(4);        transa.add(R.id.flay, frag4);        }        break;    case 5:        if (frag5 != null) {        transa.show(frag5);        } else {        frag5 = new Frag(5);        transa.add(R.id.flay, frag5);        }        break;    }    transa.commit();    }    private void fragHode() {    if (frag1 != null) {        transa.hide(frag1);    }    if (frag2 != null) {        transa.hide(frag2);    }    if (frag3 != null) {        transa.hide(frag3);    }    if (frag4 != null) {        transa.hide(frag4);    }    if (frag5 != null) {        transa.hide(frag5);    }    }    @Override    public void onClick(View v) {    switch (v.getId()) {    case R.id.btn1:        fragShow(1);        break;    case R.id.btn2:        fragShow(2);        break;    case R.id.btn3:        fragShow(3);        break;    case R.id.btn4:        fragShow(4);        break;    case R.id.btn5:        fragShow(5);        break;    default:        break;    }    }

activity的xml文件

<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:gravity="center"    android:orientation="vertical"    tools:context="com.yxd.download.MainActivity" >    <FrameLayout        android:id="@+id/flay"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1" >    </FrameLayout>    <GridLayout        android:layout_width="match_parent"        android:layout_height="40dp"        android:columnCount="5"        android:orientation="horizontal" >        <Button            android:id="@+id/btn1"            android:background="@color/black" />        <Button            android:id="@+id/btn2"            android:background="@color/blue" />        <Button            android:id="@+id/btn3"            android:background="@color/chart" />        <Button            android:id="@+id/btn4"            android:background="@color/chart_blue" />        <Button            android:id="@+id/btn5"            android:background="@color/chart_white" />    </GridLayout></LinearLayout>

fragment中的代码

public class Frag extends Fragment {    int tag;    public Frag(int tag) {    this.tag = tag;    };    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    return inflater.inflate(R.layout.frag, container, false);    }    @Override    public void onViewCreated(View view, Bundle savedInstanceState) {    super.onViewCreated(view, savedInstanceState);    LinearLayout llay = (LinearLayout) view.findViewById(R.id.brackground);    TextView txtv = (TextView) view.findViewById(R.id.txtv);    //根据不同的参数更改背景    switch (tag) {    case 1:        llay.setBackgroundResource(R.color.black);        txtv.setText(tag + "");        break;    case 2:        llay.setBackgroundResource(R.color.blue);        txtv.setText(tag + "");        break;    case 3:        llay.setBackgroundResource(R.color.chart);        txtv.setText(tag + "");        break;    case 4:        llay.setBackgroundResource(R.color.chart_blue);        txtv.setText(tag + "");        break;    case 5:        llay.setBackgroundResource(R.color.chart_white);        txtv.setText(tag + "");        break;    default:        break;    }    }}
0 0
原创粉丝点击