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
- Fragment详解(2)
- Fragment详解 (2)Manager
- Fragment详解之四——管理Fragment(2)
- Fragment详解之四——管理Fragment(2)
- Fragment详解之四——管理Fragment(2)
- Fragment详解之四——管理Fragment(2)
- Fragment详解之四——管理Fragment(2)
- Fragment详解之四——管理Fragment(2)
- Fragment详解之四——管理Fragment(2)
- Fragment详解2
- Fragment (官方详解)
- 详解Fragment(一)
- Fragment详解(1)
- fragment详解(上)
- fragment详解(下)
- Fragment详解(上)
- fragment 详解(下)
- 【Fragment】 Android Fragment生命周期详解(图文)
- 用MSBuild和Jenkins搭建持续集成环境(2)
- 如何在vsphere client 6.0.0中克隆虚拟机?
- java实现邮件定时发送
- 删除钥匙串中的唯一标示符
- SPEC文件详解
- Fragment详解(2)
- SQLite Page Cache之并发控制
- Python 文本挖掘:使用gensim进行文本相似度计算
- 批处理定时备份oracle的脚本
- 更新唯一标示符
- 近 100 个 Linux 常用命令大全
- 工作备忘-位移枚举
- 剑指Offer--011-数值的整数次方
- C++类型强制转换