一、MainActivity.java
package com.example.zhenghuajing.shoppingmall.app; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.widget.FrameLayout; import android.widget.RadioButton; import android.widget.RadioGroup; import com.example.zhenghuajing.shoppingmall.R; import com.example.zhenghuajing.shoppingmall.base.BaseFragment; import com.example.zhenghuajing.shoppingmall.community.fragment.CommunityFragment; import com.example.zhenghuajing.shoppingmall.home.fragment.HomeFragment; import com.example.zhenghuajing.shoppingmall.shoppingcart.fragment.ShoppingcartFragment; import com.example.zhenghuajing.shoppingmall.type.fragment.TypeFragment; import com.example.zhenghuajing.shoppingmall.user.fragment.UserFragment; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends FragmentActivity { @BindView(R.id.frameLayout) FrameLayout frameLayout; @BindView(R.id.rb_home) RadioButton rbHome; @BindView(R.id.rb_type) RadioButton rbType; @BindView(R.id.rb_community) RadioButton rbCommunity; @BindView(R.id.rb_cart) RadioButton rbCart; @BindView(R.id.rb_user) RadioButton rbUser; @BindView(R.id.rg_main) RadioGroup rgMain; private ArrayList<BaseFragment> fragments; private int position; private BaseFragment currentFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Butternif 和 Activity 绑定 ButterKnife.bind(this); // 初始化 Fragment initFragment(); initListener(); // 默认设置首页 rgMain.check(R.id.rb_home); } /** * 初始化 Fragment */ private void initFragment() { fragments = new ArrayList<>(); fragments.add(new HomeFragment()); fragments.add(new TypeFragment()); fragments.add(new CommunityFragment()); fragments.add(new ShoppingcartFragment()); fragments.add(new UserFragment()); } /** * 切换各个 Fragment */ private void initListener() { rgMain.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i) { case R.id.rb_home: position = 0; break; case R.id.rb_type: position = 1; break; case R.id.rb_community: position = 2; break; case R.id.rb_cart: position = 3; break; case R.id.rb_user: position = 4; break; default: position = 0; } seitchFragment(currentFragment, getFragment(position)); } }); } /** * 切换 Fragment * @param oldFragment 当前的 Fragment * @param newFragment 下一个 Fragment */ private void seitchFragment(BaseFragment oldFragment, BaseFragment newFragment) { if (currentFragment != newFragment) { currentFragment = newFragment; if (newFragment != null) { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); // 隐藏当前 Fragment if (oldFragment != null) { fragmentTransaction.hide(oldFragment); } // 判断新的 Fragment 是否添加 if (!newFragment.isAdded()) { fragmentTransaction.add(R.id.frameLayout, newFragment).commit(); } else { fragmentTransaction.show(newFragment).commit(); } } } } /** * 根据 position 获取对应的 Fragmant * @param position 索引 * @return BaseFragment */ private BaseFragment getFragment(int position) { if (fragments.size() > 0 && fragments != null) { return fragments.get(position); } return null; } }