[android] 用fragment创建一个选项卡
界面布局,线性布局,水平排列,平均居中分布
四个TextView,宽度为0dip,权重都是1,内容居中显示
主体内容部分使用LinearLayout控件,设置id
新建四个Fragment选项类,继承系统的Fragment类
重写onCreateView()方法,返回一个View对象
新建四个布局文件,显示选项卡对应的内容
在activity中
获取LinearLayout对象,通过findViewById()方法
先找到四个TextView控件对象
调用四个TextView对象的setOnClickListener()方法,设置点击事件,参数:this
当前activity实现OnClickLisntenr接口,实现onClick()方法,传递进去View对象
设置默认界面
获取FragmentManager对象,通过getFragmentManager()方法
调用FragmentManager对象的beginTransaction()方法,开启事务,获得FragmentTransaction对象
调用FragmentTransaction对象的replace()方法,用Fragment替换当前界面,参数:containerViewId,第一个Fragment对象
containerViewId是容器的id,就是我们定义的内容主体的id
调用FragmentTransaction对象的commit()方法,提交事务
在onClick()方法里面
调用View对象的getId()方法,获取到当前点击的控件的id
switch判断一下id,根据不同的id展示不同的fragment
FragmentTransaction对象的replace()方法里面,参数1必须是个容器对象,我用TextView报类型转换异常,LinearLayout控件下面必须有一个子控件
当前没有动画效果
package com.tsh.mytabfrag; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { private TextView tv1, tv2, tv3; private FragmentManager fm; private FragmentTransaction ft; private Fragment fm1, fm2, fm3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化控件 tv1 = (TextView) findViewById(R.id.tv1); tv2 = (TextView) findViewById(R.id.tv2); tv3 = (TextView) findViewById(R.id.tv3); fm1 = new Fragment1(); fm2 = new Fragment2(); fm3 = new Fragment3(); tv1.setOnClickListener(this); tv2.setOnClickListener(this); tv3.setOnClickListener(this); fm = getFragmentManager(); ft = fm.beginTransaction(); ft.replace(R.id.content, fm1); ft.commit(); } @Override public void onClick(View v) { ft = fm.beginTransaction(); switch (v.getId()) { case R.id.tv1: ft.replace(R.id.content, fm1); break; case R.id.tv2: ft.replace(R.id.content, fm2); break; case R.id.tv3: ft.replace(R.id.content, fm3); break; default: break; } ft.commit(); } }
相关文章
- BootstrapTable 行内编辑解决方案:bootstrap-table-editor
- 网站在线客服系统源码 | 全渠道在线客服代码下载 (最新版支持外贸商城/H5/小程序/公众号对接)
- 前端vue2+vue-router3+ElementUI+axios综合使用代码教程登录页案例
- 在线客服系统对接微信小程序(客服消息推送)
- 【小程序】同一微信号在微信开发工具上怎么切换小程序
- 【小程序】微信公众号模板消息跳转小程序发送失败:errcode=40013 , errmsg=invalid appid rid:
- 【小程序】微信小程序报错47001 - data format error hint
- 【小程序】微信小程序报错:用户绑定的手机需要进行验证,请在客户端完成短信验证
- 【小程序】微信小程序设置globalData全局数据
- 【小程序】获取手机号报错:getPhoneNumber:fail no permission
- 【小程序】小程序webview不支持打开非业务域名请重新配置
- 【uniapp】uniapp微信小程序开发:启动微信开发者工具提示no such file or directory错误
- 【小程序】uniapp发行微信小程序上传失败Error: Error: {"errCode":-10008,"errMsg":"invalid ip
- 【小程序】如何获取微信小程序代码上传密钥?
- [前端] 前端bootstrap col-xs-6 col-md-3的布局意思
- [PHP] laravel框架注意bootstrap/cache
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(35)-Fiddler如何抓取微信小程序的包-下篇
- 网站在线客服系统源码 | 全渠道在线客服代码下载 (最新版支持外贸商城/H5/小程序/公众号对接)
- 前端vue2+vue-router3+ElementUI+axios综合使用代码教程登录页案例
- 在线客服系统对接微信小程序(客服消息推送)