zoukankan      html  css  js  c++  java
  • [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();
        }
    }
  • 相关阅读:
    CSharp Oracle 登陆
    Oracle基本流程语句
    数据库设计三大范式
    自己总结一些操作数据库的方法
    常用数据库取得前几行的方法
    Intellij idea创建javaWeb以及Servlet简单实现
    idea发布到tomcat缺少jar
    回调函数
    spring笔记
    动态代理
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5406323.html
Copyright © 2011-2022 走看看