取消 onCreate 的 popBackStack
popBackStack with dismissing onCreate
我正在尝试将我的 IOS 应用程序转换为 android,我对 android 有点陌生。我的应用程序通常使用导航抽屉在片段之间导航。当我在片段 A,然后转到片段 B,然后按后退按钮,下面的代码返回到片段 A。但是,当我使用后退按钮转到片段 A 时,它再次从开始。有没有一种方法可以返回到上一个片段而无需再次加载 class 以显示片段中的上一个信息?如果有人能对此提供帮助,那就太好了?
这是按下后退按钮时的代码:
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount()>0) {
fm.popBackStack();
}
else {
System.out.println("no more back");
}
}
}
这就是我在片段之间导航的方式:
usersFragment fragment = new usersFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
编辑:
使用
fragmentTransaction.hide(getFragmentManager().findFragmentByTag("yourTag"));
fragmentTransaction.add(R.id.fragment_container, fragment);
而不是
fragmentTransaction.replace(R.id.fragment_container, fragment);
这是因为 replace 删除当前片段并添加下一个片段。所以当回来时它再次重新创建以前的片段。
我正在尝试将我的 IOS 应用程序转换为 android,我对 android 有点陌生。我的应用程序通常使用导航抽屉在片段之间导航。当我在片段 A,然后转到片段 B,然后按后退按钮,下面的代码返回到片段 A。但是,当我使用后退按钮转到片段 A 时,它再次从开始。有没有一种方法可以返回到上一个片段而无需再次加载 class 以显示片段中的上一个信息?如果有人能对此提供帮助,那就太好了?
这是按下后退按钮时的代码:
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount()>0) {
fm.popBackStack();
}
else {
System.out.println("no more back");
}
}
}
这就是我在片段之间导航的方式:
usersFragment fragment = new usersFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
编辑:
使用
fragmentTransaction.hide(getFragmentManager().findFragmentByTag("yourTag"));
fragmentTransaction.add(R.id.fragment_container, fragment);
而不是
fragmentTransaction.replace(R.id.fragment_container, fragment);
这是因为 replace 删除当前片段并添加下一个片段。所以当回来时它再次重新创建以前的片段。