Fragment的创建、动态绑定、静态绑定
2015-08-14 11:47
411 查看
以下程序要实现的是在主界面activity_main界面中嵌入两个按钮,通过点击按钮进行调用两个Fragment中的内容,通常用于手机底部按钮的设置
首先在Layout布局文件中创建两个Fragment文件,命名分别为Fragment_me和Fragment_product在布局文件中进行了自己需要的布局内容,当然Layout布局文件下面还有创建Android时生成的activity_main布局文件,在activity_main中代码如下:
1、动态添加:
其次在src目录下创建一个Fragment的包,在Fragment包中分别创建两个Fragment对应的java文件(几乎类似Activity)分别命名为MyFragement和ProductFragment与上面创建的两个Layout布局文件相对应
ProductFragment.java中代码:
MyFragment.java中的代码:
最后是在MainActivity文件中通过添加Fragment容器,通过容器引用fragment_me和fragment_product两个布局,就能在MainActivity对应的activity_main中显示,代码如下:
首先在Layout布局文件中创建两个Fragment文件,命名分别为Fragment_me和Fragment_product在布局文件中进行了自己需要的布局内容,当然Layout布局文件下面还有创建Android时生成的activity_main布局文件,在activity_main中代码如下:
1、动态添加:
<Button android:id="@+id/main_btn_product" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="商品" /> <Button android:id="@+id/main_btn_me" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我" /> <!-- Fragment的容器 --> <span style="white-space:pre"> </span><FrameLayout <span style="white-space:pre"> </span>android:id="@+id/main_fragmentcontainer" android:layout_width="match_parent" android:layout_height="match_parent" </FrameLayout>
其次在src目录下创建一个Fragment的包,在Fragment包中分别创建两个Fragment对应的java文件(几乎类似Activity)分别命名为MyFragement和ProductFragment与上面创建的两个Layout布局文件相对应
ProductFragment.java中代码:
public class ProductFragment extends Fragment{ private View rootView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if(rootView == null){ rootView = inflater.inflate(R.layout.fragment_product, container, false); } ViewGroup par = (ViewGroup) rootView.getParent(); if(par != null){ par.removeView(rootView); } return rootView ; } }
MyFragment.java中的代码:
<pre name="code" class="java">public class MyFragment extends Fragment implements OnClickListener{ private View rootView ; //Fragment 的layout文件中的根文件 private ImageView iv ; private Button btnGallery ,btnCamera ; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if(rootView == null){ rootView = inflater.inflate(R.layout.fragment_me, container, false) ; initView(rootView); } ViewGroup par = (ViewGroup) rootView.getParent() ; if(par != null){ par.removeView(rootView) ; } return rootView ; } private void initView(View rootView2) { iv = (ImageView) rootView.findViewById(R.id.me_iv_photo) ; btnGallery = (Button) rootView.findViewById(R.id.gallery) ; btnCamera = (Button) rootView.findViewById(R.id.camera) ; btnGallery.setOnClickListener(this) ; btnCamera.setOnClickListener(this) ; } public void onClick(View v) { switch(getId()){ case R.id.gallery : break ; case R.id.camera : break ; } } }
最后是在MainActivity文件中通过添加Fragment容器,通过容器引用fragment_me和fragment_product两个布局,就能在MainActivity对应的activity_main中显示,代码如下:
<pre name="code" class="java">public class MainActivity extends FragmentActivity implements OnClickListener { Fragment productFragment, myFragment ; Button my, pro ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R.layout.activity_main) ; productFragment = new ProductFragment() ; myFragment = new MyFragment() ; //添加一个Fragment到容器 getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, productFragment).commit() ; //获取控件 my = (Button) findViewById(R.id.my) ; pro = (Button) findViewById(R.id.product) ; my.setOnClickListener( this) ; pro.setOnClickListener( this) ; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.my : //添加一个Fragment到容器 getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, myFragment).commit() ; break ; case R.id.product : //添加一个Fragment到容器 getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, productFragment).commit() ; break ; } } }2、静态添加方式:在Activity的layout中添加Fragment(知识这个地方不同)
<span style="white-space:pre"> </span><fragment android:name = "com.rounding.fragment.MyFragment" android:layout_width="wrap_content" android:layout_height="300dp" </fragment>
相关文章推荐
- java null 的相关问题
- hdoj1285 确定比赛名次(topo序列)模板
- 可以开始写博客来记录自己的学习之路了。
- BZOJ1025
- 多线程八 生产者消费者经典问题
- 简易信息管理系统——增删改查知识总结
- DIV制作浮在页面的窗口
- hdu 1209 Clock(排序)
- Android: 线程的结束,挂起和恢复
- LNMP环境搭建——Nginx篇
- jQuery Ajax 实例 ($.ajax、$.post、$.get)
- Apache端口复用-模块rootme
- poi excel读取
- 多线程七 经典线程同步与互斥总结
- AngularJs应用页面切换优化方案
- ionic中隐藏tabs(tabs-item-hide)
- 对象的操作
- SOCKET通过代理连接服务器
- 找到循环链表的入口节点
- Javascript 私有变量