public class MainActivity extends BaseActivity {
@BindView(R.id.fragment)
FrameLayout fragment;
@BindView(R.id.rb_home)
RadioButton rbHome;
@BindView(R.id.rb_message)
RadioButton rbMessage;
@BindView(R.id.rb_mine)
RadioButton rbMine;
@BindView(R.id.rb_more)
RadioButton rbMore;
@BindView(R.id.rg)
RadioGroup rg;
@BindView(R.id.activity_main)
RelativeLayout activityMain;
private int position = 0;
private final String TAG = "MainActivity";
private HomeFragment mHomeFragment;
private MessageFragment mMessageFragment;
private MineFragment mMineFragment;
private MoreFragment mMoreFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initView();
setTabSelection(position);
}
private void initView() {
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.rb_home:
Log.v(TAG, "setupWidgets():radio0 clicked");
setTabSelection(0);
break;
case R.id.rb_message:
Log.v(TAG, "setupWidgets():radio1 clicked");
setTabSelection(1);
break;
case R.id.rb_mine:
Log.v(TAG, "setupWidgets():radio1 clicked");
setTabSelection(2);
break;
case R.id.rb_more:
Log.v(TAG, "setupWidgets():radio1 clicked");
setTabSelection(3);
break;
default:
break;
}
}
});
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
outState.putInt("position", position);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
position = savedInstanceState.getInt("position");
setTabSelection(position);
super.onRestoreInstanceState(savedInstanceState);
}
public void setTabSelection(int position) {
//记录position
this.position = position;
//更改底部导航栏按钮状态
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
hideFragments(transaction);
// transaction.hide(mHomeFragment).hide(mMessageFragment).hide(mMineFragment).hide(mMoreFragment).commit();
transaction = getSupportFragmentManager().beginTransaction();
switch (position) {
case 0:
rbHome.setChecked(true);
if (mHomeFragment == null) {
mHomeFragment = new HomeFragment();
transaction.add(R.id.fragment, mHomeFragment, "HomeFragment");
} else {
transaction.show(mHomeFragment);
}
break;
case 1:
rbMessage.setChecked(true);
if (mMessageFragment == null) {
mMessageFragment = new MessageFragment();
transaction.add(R.id.fragment, mMessageFragment, "MessageFragment");
} else {
transaction.show(mMessageFragment);
}
break;
case 2:
rbMine.setChecked(true);
if (mMineFragment == null) {
mMineFragment = new MineFragment();
transaction.add(R.id.fragment, mMineFragment, "MineFragment");
} else {
transaction.show(mMineFragment);
}
break;
case 3:
rbMore.setChecked(true);
if (mMoreFragment == null) {
mMoreFragment = new MoreFragment();
transaction.add(R.id.fragment, mMoreFragment, "MoreFragment");
} else {
transaction.show(mMoreFragment);
}
break;
}
transaction.commit();
}
private void hideFragments(FragmentTransaction transaction) {
if(mHomeFragment!=null)
transaction.hide(mHomeFragment);
if(mMessageFragment!=null)
transaction.hide(mMessageFragment);
if(mMineFragment!=null)
transaction.hide(mMineFragment);
if(mMoreFragment!=null)
transaction.hide(mMoreFragment);
transaction.commit();
}
}
android使用radioButton 切换fragment 解决fragment叠影
最新推荐文章于 2024-09-30 15:37:45 发布