1.使用show()、hide()方式进行fragment切换
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.main_home:
switchFragmentWithShowHide(0);
break;
case R.id.main_shop:
switchFragmentWithShowHide(1);
break;
case R.id.main_community:
switchFragmentWithShowHide(2);
break;
case R.id.main_mine:
switchFragmentWithShowHide(3);
break;
}
}
private void hideAllFragment(){
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (homeFragment != null){
transaction.hide(homeFragment);
}
if (shopFragment != null){
transaction.hide(shopFragment);
}
if (communityFragment != null){
transaction.hide(communityFragment);
}
if (mineFragment != null){
transaction.hide(mineFragment);
}
transaction.commit();
}
private void switchFragmentWithShowHide(int position){
hideAllFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
switch (position){
case 0:
if (homeFragment == null){
homeFragment = new HomeFragment();
transaction.add(R.id.main_container , homeFragment , homeFragment.getClass().getName());
}else {
transaction.show(homeFragment);
}
break;
case 1:
if (shopFragment == null){
shopFragment = new ShopFragment();
transaction.add(R.id.main_container , shopFragment , shopFragment.getClass().getName());
}else {
transaction.show(shopFragment);
}
break;
case 2:
if (communityFragment == null){
communityFragment = new CommunityFragment();
transaction.add(R.id.main_container , communityFragment , communityFragment.getClass().getName());
}else {
transaction.show(communityFragment);
}
break;
case 3:
if (mineFragment == null){
mineFragment = new MineFragment();
transaction.add(R.id.main_container , mineFragment , mineFragment.getClass().getName());
}else {
transaction.show(mineFragment);
}
break;
}
transaction.commit();
}
点击展示HomeFragment时,由于HomeFragment是未创建状态,所以会执行HomeFragment的创建生命周期
09-26 15:56:02.090 32733-32733/com.example.testfragment E/HomeFragment: onAttach:
09-26 15:56:02.090 32733-32733/com.example.testfragment E/HomeFragment: onCreate:
09-26 15:56:02.091 32733-32733/com.example.testfragment E/HomeFragment: onCreateView:
09-26 15:56:02.101 32733-32733/com.example.testfragment E/HomeFragment: onActivityCreated:
09-26 15:56:02.101 32733-32733/com.example.testfragment E/HomeFragment: onStart:
09-26 15:56:02.102 32733-32733/com.e