如何使用 FAB 按钮从 MainActivity 导航到(第二个)片段?

问题描述 投票:0回答:1

我正在使用基本活动模板开发一个 Android 项目。 Android studio 提供了MainActivity 和两个fragment(以及一个额外的contents_main 布局)。 MainActivity 布局有一个浮动操作按钮 (FAB),当应用程序启动时,第一个片段在 MainActivity 中可见。第一个片段布局还有一个“下一个”按钮,可导航到第二个片段。

我想 **使用 FAB 按钮导航到第二个片段 **(如下一个按钮)。我尝试使用这个(来自另一个问题)但应用程序崩溃了。

Intent intent = new Intent(MainActivity.this, SecondFragment.class);
                startActivity(intent);

我还尝试了以下由 Bing (AI) 搜索的解决方案来导航到第二个片段,它确实有效。然而,当我**按 **后退按钮时,它会将我带回(空白)MainActivity,并且第一个片段以某种方式被删除?,这意味着它的内容不存在。当我 **单击 **第二个片段中的“上一个”按钮时,应用程序崩溃了

binding.fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); // Test fragment navigation Fragment newFrag = new SecondFragment(); // using fragment transaction to replace fragments. FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.layout_content_main, newFrag); transaction.addToBackStack(null); transaction.commit(); } });
有人可以帮我解决这个问题吗?如何使用 FAB 按钮从 MainActivity 导航到第二个片段而不删除第一个片段?

PS:我知道我可以将 fab 移动到fragment_first 布局文件,然后将代码从下一个按钮 onclick 侦听器复制到 fab 按钮上的单击侦听器中,并且它可以工作,但我也想学习另一种方式,如果它存在。 TY.

android debugging android-fragments android-activity
1个回答
0
投票
您已在交易

null

 中传递了 
addToBackStack
,因此在从 
FirstFragment
SecondFragment
 进行交易时,它不会将您的第一个片段保留在后台堆栈中。

为了满足您的要求,只需更改 fab 按钮单击方法中的代码,如下所示,该方法将

FirstFragment

 内部添加到片段事务的后退堆栈中,当您从 
SecondFragment
 单击后退按钮时,它将打开后退堆栈片段。

Fragment newFrag = new SecondFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.layout_content_main, newFrag); // Here we are adding the first fragment in the back stack for the stack amagement transaction.addToBackStack("FirstFragment"); transaction.commit();
    
© www.soinside.com 2019 - 2024. All rights reserved.