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

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5419.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论