android fragmentmanager 界面报错,Android Tab -- 使用Fragment、FragmentManager来实现

效果:

6e8850e2ee39b5296ce65ab245582165.png

1、布局:使用LinearLayout布置标签;再使用FrameLayout来布置Fragment。

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="36dp"

android:orientation="horizontal"

android:weightSum="3">

android:id="@+id/tab1_layout"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@color/tab_down"

android:gravity="center">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选项卡一"

android:textColor="#ffffff"/>

android:layout_width="2dp"

android:layout_height="match_parent"

android:background="#ffffff"/>

android:id="@+id/tab2_layout"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@color/tab"

android:gravity="center">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选项卡二"

android:textColor="#ffffff"/>

android:layout_width="2dp"

android:layout_height="match_parent"

android:background="#ffffff"/>

android:id="@+id/tab3_layout"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@color/tab"

android:gravity="center">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选项卡"

android:textColor="#ffffff"/>

android:id="@+id/content_layout"

android:layout_width="match_parent"

android:layout_height="match_parent">

fragment_fragmentmanager.xml

1、方法replaceFragment()实现切换Fragment的功能:通过FragmentTransaction的replace方法来替换FrameLayout中的Fragment。

2、改变标签的背景色,来区分选中的Tab与其他Tab。

public class FragmentAndFManagerActivity extends FragmentActivity

implements View.OnClickListener {

private static final String LOG_TAG = FragmentAndFManagerActivity.class.getSimpleName();

// 三个选项卡

private LinearLayout tab1Layout, tab2Layout, tab3Layout;

// 默认选中第一个

private int index = 1;

// fragment管理类

private FragmentManager fragmentManager;

// 三个fragment

private Fragment tab1Fragment, tab2Fragment, tab3Fragment;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.fragment_fragmentmanager);

fragmentManager = getSupportFragmentManager();

init();

}

/**

* 初始化控件

*/

private void init(){

tab1Layout = (LinearLayout) findViewById(R.id.tab1_layout);

tab2Layout = (LinearLayout) findViewById(R.id.tab2_layout);

tab3Layout = (LinearLayout) findViewById(R.id.tab3_layout);

tab1Layout.setOnClickListener(this);

tab2Layout.setOnClickListener(this);

tab3Layout.setOnClickListener(this);

setDefaultFragment();

}

/**

* 设置默认显示的fragment

*/

private void setDefaultFragment(){

FragmentTransaction transaction = fragmentManager.beginTransaction();

tab1Fragment = new FragmentAndFManager_Fragment1();

transaction.replace(R.id.content_layout, tab1Fragment);

transaction.commit();

}

/**

* 切换fragment

* @param newFragment

*/

private void replaceFragment(Fragment newFragment){

FragmentTransaction transaction = fragmentManager.beginTransaction();

if(!newFragment.isAdded()) {

Log.d(LOG_TAG, "In replaceFragment -- replace");

transaction.replace(R.id.content_layout, newFragment);

transaction.commit();

}else{

Log.d(LOG_TAG, "In replaceFragment -- show");

transaction.show(newFragment);

}

}

/**

* 改变选项卡的选中状态

*/

private void clearStatus(){

if(index == 1){

tab1Layout.setBackgroundColor(getResources().getColor(R.color.tab));

}else if(index == 2){

tab2Layout.setBackgroundColor(getResources().getColor(R.color.tab));

}else if(index == 3){

tab3Layout.setBackgroundColor(getResources().getColor(R.color.tab));

}

}

@Override

public void onClick(View v) {

clearStatus();

switch(v.getId()){

case R.id.tab1_layout:

if(tab1Fragment == null){

tab1Fragment = new FragmentAndFManager_Fragment1();

}

replaceFragment(tab1Fragment);

tab1Layout.setBackgroundColor(getResources().getColor(R.color.tab_down));

index = 1;

break;

case R.id.tab2_layout:

if(tab2Fragment == null){

tab2Fragment = new FragmentAndFManager_Fragment2();

}

replaceFragment(tab2Fragment);

tab2Layout.setBackgroundColor(getResources().getColor(R.color.tab_down));

index = 2;

break;

case R.id.tab3_layout:

if(tab3Fragment == null){

tab3Fragment = new FragmentAndFManager_Fragment3();

}

replaceFragment(tab3Fragment);

tab3Layout.setBackgroundColor(getResources().getColor(R.color.tab_down));

index = 3;

break;

}

}

}

FragmentAndFManagerActivity.java

android Tab 类型切换界面

实现方案:viewpager + fragment + FragmentPagerAdapter 效果图: 可以左右滑动切换选项卡,或者点击: 如果想使用fragment的时候又想可以左右滑动,就可以 ...

android Tab =viewpager+fragmnet

1.定义几个fragment 的subclass 如fragmentone,fragmenttwo; public class fragmentthree extends Fragment { pri ...

仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment

仿百度壁纸客户端(一)--主框架搭建,自定义Tab+ViewPager+Fragment 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment ...

Android开发学习—— Fragment

#Fragment* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity* 定义布局文件作 ...

[Android] 多重使用Fragment 中的onFragmentInteraction

新建的一个Fragment,被一个Activity使用,那么这个Activity需要继承一个接口: public class MainActivity extends Activity impleme ...

Android 动态创建Fragment

Fragment是activity的界面中的一部分或一种行为.可以把多个Fragment组合到一个activity中来创建一个多界面并且可以在多个activity中重用一个Fragment.可以把Fr ...

Android碎片(Fragment)简述

碎片(Fragment)是一种可以嵌入活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因此碎片在平板上的应用非常广泛. 你可以将碎片理解成一个迷你型的活动,水平同样可能包含布局,同样都 ...

Android系列之Fragment(四)----ListFragment的使用

​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

随机推荐

关于css清除浮动,解决内容溢出的问题

以前在布局的时候总会遇到这样的问题,比如我想让整体的内容居中,所以会这样写, .main-content{ width:960px:height:300px;margin:0px auto; } 然后 ...

使用EntityFramwork[6.1]进行级联保存的时候出现异常

出现的异常:System.InvalidOperationException: Multiplicity constraint violated. The role 'IncomeItem_Creat ...

使用MediaPlayer播放音频-----之二

MediaPlayer播放不同来源的音频文件: 一.播放应用的资源文件 1.调用MediaPlayer的create(Context  context , int  resid)方法加载指定资源文件. ...

Centos6.4 为用户添加sudo功能

sudo即super user do,以超级管理员的方式运行命令.使用时,只需在命令最前面加上sudo即可. 要为用户添加sudo功能,需要修改sudo的配置文件: vi /etc/sudoers ( ...

查看Linux声卡基本信息[转载]

查看系统版本~$ uname -aLinux laptop 2.6.27-7-generic #1 SMP Tue Nov 4 19:33:20 UTC 2008 i686 GNU/Linux 查看型 ...

Jetty:开发指导Handlers

Rewrite Handler RewriteHandler匹配一个基于该请求的规则集合,然后根据匹配规则的变更请求. 最常见的要求是改写URI.但不限于:规则可以被配置为重定向响应.设置cookie ...

Android 基于Netty接收和发送推送解决方案的消息字符串(三)

在上一篇文章中 .我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...

JAVA NIO之文件通道

1.简介 通道是 Java NIO 的核心内容之一,在使用上,通道需和缓存类(ByteBuffer)配合完成读写等操作.与传统的流式 IO 中数据单向流动不同,通道中的数据可以双向流动.通道既可以读, ...

DS控件库 在Combobox中嵌入远程桌面

本示例演示DS开放式下拉列表控件中加入一个RDP远程桌面控件. 先在VS工具箱中添加COM控件Microsoft RDP Client Control,后面的Version版本可以适当高点. 然后将R ...

jQuery - 链(Chaining)

http://www.runoob.com/jquery/jquery-chaining.html jQuery - 链(Chaining) 通过 jQuery,可以把动作/方法链接在一起. Chai ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值