记录下切换fragment不重新实例化的方法:像淘宝 京东都是这样的效果.
private WarnFragment mWarnFragment; //申明3个fragment //我的
private MyselfFragment mMyselfFragment; //预警
private CloudFragment mCloudFragment; //云
//点击事件
mMainRbCloud.setOnClickListener(this);
mMainRbWarn.setOnClickListener(this);
mMainRbMine.setOnClickListener(this);
//默认选中第一个
setTabSelected(0);
//点击事件
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.main_rb_cloud:
setTabSelected(0);
break;
case R.id.main_rb_warn:
setTabSelected(1);
break;
case R.id.main_rb_mine:
setTabSelected(2);
break;
}
}
//显示fragment
private void setTabSelected(int index) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
hideFragments(transaction); //先隐藏所有的fragment
switch (index) {
case 0:
if(mCloudFragment == null) {
mCloudFragment = new CloudFragment();
transaction.add(R.id.main_fr_content,mCloudFragment);
} else {
transaction.show(mCloudFragment);
}
break;
case 1:
if(mWarnFragment == null) {
mWarnFragment = new WarnFragment();
transaction.add(R.id.main_fr_content,mWarnFragment);
} else {
transaction.show(mWarnFragment);
}
break;
case 2:
if(mMyselfFragment == null) {
mMyselfFragment = new MyselfFragment();
transaction.add(R.id.main_fr_content,mMyselfFragment);
} else {
transaction.show(mMyselfFragment);
}
break;
}
transaction.commit();
}
//隐藏所有fragment防止显示多个
private void hideFragments(FragmentTransaction transaction) {
if(mCloudFragment!=null) {
transaction.hide(mCloudFragment);
}
if(mWarnFragment!=null) {
transaction.hide(mWarnFragment);
}
if(mMyselfFragment!=null) {
transaction.hide(mMyselfFragment);
}
}
上面是核心代码, 具体要切换按钮的状态,自己随意写.