专栏首页陶士涵的菜地[android] 用fragment创建一个选项卡

[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();
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [android] 显示意图激活另外一个activity

    新建一个类TwoActivity ,继承Activity类,重写onCreate()方法,这个方法是界面开启的时候自动调用,在这个函数里面大部分进行初始化的操作...

    陶士涵
  • [android] post请求接口demo测试代码

    陶士涵
  • [android] 帧布局

    /*******************2016年5月3日 更新**************************************/

    陶士涵
  • Publish Gradle Android Library to jCenter Repository

    本文主要介绍如何通过Gradle将Android库项目上传到jCenter仓库中。

    宅男潇涧
  • 腾讯云多Kubernetes的多维度监控实践

    本次分享的主要内容涉及腾讯云容器的顶层整体设计,包括产品功能,及提供的附加能力。同时会介绍我们现在Master集群化部署的整体方案。

    云加社区专栏
  • 简单分析shared pool(三) (r5笔记第94天)

    提到shared pool,都会不由得和sql语句的解析过程联系起来,因为shared pool所做的主要工作就是解析sql语句,生成执行计划,在之前的两篇中...

    jeanron100
  • CSS 全解析实战(五)-CSS 效果属性1 box-shadow

    JavaEdge
  • 一文看懂如何分析MySQL Explain(3/3)

    注:t_classes表增加了一个组合索引,字段名`grade`, `classes_name`, `student_num`, `head_teacher_...

    程序员小强
  • 小朋友学数学(23):求2000!末尾有多少个0

    一个数末尾的0是由2和5乘出来的,而1到2000里2多得是,主要看1到2000中有多少个5或5的n次方的倍数。 (1)统计5的倍数 2000/5=400,比如5...

    海天一树
  • HTML5应用 + Cordova = 平台相关的混合应用

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog....

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动