android tab切换 fragment不显示,Android_TabFragment_用FragmeLayout切换不同的Fragment

代码地址

代码

市面上很多app都是底部几个Tab然后点击切换页面,ViewPager和Fragment也可以实现,

但是这里使用的是一个FrageLayou切换不同的Fragment.

博客只给出关键的代码,其余的代码请在上面的链接里查看

public class MainActivity extends AppCompatActivity {

private Fragment fragmentOne, fragmentTwo;

private static final String FRAGMENT_ONE = "one";

private static final String FRAGMENT_TWO = "two";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

setTabSelect(0);

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rg_group);

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup radioGroup, int i) {

switch (i) {

case R.id.rb_one:

setTabSelect(0);

break;

default:

setTabSelect(1);

break;

}

}

});

}

private void setTabSelect(int i) {

FragmentManager manager = getSupportFragmentManager();

FragmentTransaction transaction = manager.beginTransaction();

switch (i) {

case 0:

fragmentOne = manager.findFragmentByTag(FRAGMENT_ONE);

hideTab(transaction);

if (null == fragmentOne) {

fragmentOne = FragmentOne.startFragment();

transaction.add(R.id.fragment, fragmentOne, FRAGMENT_ONE);

} else {

transaction.show(fragmentOne);

}

break;

case 1:

fragmentTwo = manager.findFragmentByTag(FRAGMENT_TWO);

hideTab(transaction);

if (null == fragmentTwo) {

fragmentTwo = FragmentTwo.startFragment();

transaction.add(R.id.fragment, fragmentTwo, FRAGMENT_TWO);

} else {

transaction.show(fragmentTwo);

}

break;

}

transaction.commit();

}

private void hideTab(FragmentTransaction transaction) {

if (null != fragmentOne) {

transaction.hide(fragmentOne);

}

if (null != fragmentTwo) {

transaction.hide(fragmentTwo);

}

}

}

效果图

036e81484823076544fa79bd6a4696d7.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值