Fragment PopBackStack
使用片段并将其弹出回来时,我遇到一个奇怪的问题。
我有一个片段活动:
第1步:我将一个名为Fragment A的Activity的onCreate附加到该Activity的onCreate中,如下所示:
这是片段活动的onCreate
1 2 3 4 5 6 7 8 9 | @Override protected void onCreate(Bundle savedBundleState) { super.onCreate(savedBundleState); setContentView(R.layout.activity_base_new); Fragement_Home home = new Fragement_Home(); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().add(R.id.frameContent, home).addToBackStack("home").commit(); } |
步骤:2之后,我将片段替换为以下代码:
1 2 3 | Fragment_More moreFragment = new Fragment_More(); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().replace(R.id.frameContent, moreFragment).addToBackStack("more").commit(); |
第3步:此后,我再次以相同的方式在Fragment_More上添加了一个片段:
1 2 | Fragment_AboutRockstand termsConditions = new Fragment_AboutRockstand(); getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.frameContent, termsConditions).addToBackStack("about_rockstand").commit(); |
这是我的片段在onBackPressedButton Lisetener上的活动:
1 2 3 4 5 6 7 8 9 10 11 | @Override public void onBackPressed() { FragmentManager fm = getSupportFragmentManager(); Fragment f = fm.findFragmentById(R.id.frameContent); if(fm.getBackStackEntryCount() > 1){ fm.popBackStack(); } else{ finish(); } } |
这是我遇到的问题:
当我从步骤3中按回去时,如onBackPressed所述,它成功地给了我上一个片段,它将弹出backstack,并将我带到上一个片段。但是从Fragment_More中,当我再次按回时,它显示了空白的FRAGMENT内容。它从不显示我在活动的OnCreate的步骤1中添加的第一个片段。
请发表评论。我做错了什么?
谢谢
您不应该将第一个片段添加到Backstack中,因为按回车键只会撤消您所做的操作。因此,如果您替换一个片段并按回,它将使您所做的替换相反。但是,如果您按回"
1 2 3 4 5 6 7 8 9 | @Override protected void onCreate(Bundle savedBundleState) { super.onCreate(savedBundleState); setContentView(R.layout.activity_base_new); Fragement_Home home = new Fragement_Home(); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().add(R.id.frameContent, home).commit(); } |
示例:
因此,假设您有两个称为A的片段
n
n