【发布时间】:2015-04-15 17:08:49
【问题描述】:
我正在尝试通过在按下单选按钮时切换片段来管理单个活动的片段。在每次替换操作中,我都调用 addToBackStack() 方法,但是当我按下返回按钮时,它会关闭活动而不是转到上一个片段。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_flow);
radioGroup = (RadioGroup) findViewById(R.id.rdoGrp);
rdBtnHome = (RadioButton) findViewById(R.id.rdBtnHome);
rdBtnSearch = (RadioButton) findViewById(R.id.rdBtnSearch);
rdBtnShoot = (RadioButton) findViewById(R.id.rdBtnShoot);
rdBtnUser = (RadioButton) findViewById(R.id.rdBtnUser);
rdBtnAlarm = (RadioButton) findViewById(R.id.rdBtnAlarm);
homeFragment = new HomeFragment();
searchFragment = new SearchFragment();
userFragment = new UserFragment();
shootFragment = new ShootFragment();
alarmFragment = new AlarmFragment();
getSupportActionBar().setDisplayOptions(android.support.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar);
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frameLayoutMain, homeFragment);
ft.addToBackStack(null);
ft.commit();
rdBtnHome.setChecked(true);
// Creating once image loader configuration
createImageLoaderConfiguration();
// Defining footer radiogroup including radiogroup callback listener
defineFooterRadioGroup();
Log.d("Logged User", Me.meGetInstance().toString());
}
private void defineFooterRadioGroup() {
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
switch (checkedId) {
case R.id.rdBtnHome:
ft.replace(R.id.frameLayoutMain, homeFragment);
ft.addToBackStack(null);
ft.commit();
break;
case R.id.rdBtnAlarm:
ft.replace(R.id.frameLayoutMain, alarmFragment);
ft.addToBackStack(null);
ft.commit();
break;
case R.id.rdBtnSearch:
ft.replace(R.id.frameLayoutMain, searchFragment);
ft.addToBackStack(null);
ft.commit();
break;
case R.id.rdBtnShoot:
ft.replace(R.id.frameLayoutMain, shootFragment);
ft.addToBackStack(null);
ft.commit();
break;
case R.id.rdBtnUser:
ft.replace(R.id.frameLayoutMain, userFragment);
ft.addToBackStack(null);
ft.commit();
break;
}
}
});
}
【问题讨论】:
-
我猜你没有使用 fragmentactivity 并且在 onbackpressed 中没有实现 backstack 使用
-
@mlody991 我正在使用 ActionBarActivity,它扩展了 FragmentActivity。
标签: android android-fragments back-stack