界面布局,线性布局,水平排列,平均居中分布
四个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控件下面必须有一个子控件
当前没有动画效果
代码语言:javascript复制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();
}
}