问题标签 [fragment-backstack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
184 浏览

android - Android:片段行为出乎意料(突然透明?)

我的片段有问题。我使用此代码在片段之间导航:

在“主要”片段之间(没有回栈,因为我希望用户在他按下后退出(它有效)):

并在“内部”片段之间(带有 backstack):

但在以下情况下:

片段 A -> 片段 A1

片段 A1 -> 片段 B

按返回按钮(应该结束应用程序)-> 返回片段 A1

这个发生:

图片

看起来 A1 片段没有从后台堆栈中删除并留在后台。我认为一种可能的解决方案是将所有片段设置为白色背景..但这不能解决问题,它只会隐藏它。那么可能的解决方案是什么?

0 投票
2 回答
174 浏览

android - 后退导航不恢复最后一个片段

我有一个问题,back navigation因为它不会恢复最后一个片段。所有活动都AppCompatActivity使用 Android Studio 的 navigation_drawer( ActivityA) 和 scroll_activity( ActivityB) 模板

  • ActivityA显示fragment_1(确定)
  • 替换fragment_1fragment_2(确定)
  • 首先单击(确定) ActivityB中的按钮fragment_2
    • 如果我单击系统的后退按钮,我可以看到ActivityB( GOOD )
    • 如果我单击 的back导航ActivityB,则显示fragment_1而不是 fragment_2(不好)

我尝试过的是:

  1. 创建一个静态变量来控制显示哪个片段,并尝试再次渲染,onResume()但它不起作用。
  2. 按照这个链接但也不起作用。

有什么帮助吗?谢谢

0 投票
2 回答
2849 浏览

android - Android Fragment 未添加到 Back Stack

我正在做一个基于 NavigationDrawer 的应用程序。我有一个如下所示的层次结构

NavigationDrawer --> RootFragment(未添加到后台堆栈)--> 详细片段(已添加到后台堆栈)

现在,当用户尝试通过按后退按钮退出应用程序时,我试图向用户显示一条消息。这是我正在使用的代码。

当我从添加到后台堆栈的详细信息片段中单击后退按钮时,我收到了警报消息。相反,我会回到根片段。

但是,如果我像这样更新代码,按下后退按钮会将用户带回根视图。所以看起来 getFragmentManager().getBackStackEntryCount() 是零,即使详细的片段被添加到后堆栈。

下面是我如何从 rootFragment 调用细节片段。

这是从导航抽屉侧菜单打开的根视图。

我在这里做错了什么?实现这一点的正确方法是什么?

谢谢。

0 投票
1 回答
79 浏览

android - 片段。ActionBar 返回导航

我有一个活动和三个片段。当我从一个片段转到另一个片段时,我将它的事务写入 backStack:

当我按下 ActionBar 上的后退箭头并转到箭头丢失的第一个片段时,它是正确的。

((AppCompatActivity)getActivity()).getSupportActionBar() .setDisplayHomeAsUpEnabled(false);

但是,如果我按下系统后退按钮并转到后箭头停留的第一个片段,这是错误的。

0 投票
1 回答
716 浏览

android - 如何避免重复的 backstack 条目

我正在开发一个有很多片段的应用程序,在浏览它们时,每个片段都被添加到后台堆栈中……我想要实现的是我不想要重复的后台堆栈条目。...例如,如果我有四个片段 f1,f2,f3,f4 并且如果我浏览 f1-f2-f3-f1-f4-f3 片段 f1 和 f3 被添加两次 ....有没有办法可以检查片段是否已经在后台堆栈中,因此不会添加重复的条目?

0 投票
0 回答
139 浏览

java - 静态片段布局上的事务

我可以像这样进行片段交易:

只需在具有此布局的活动中:

whereFragment1包含一个正常的LinearLayoutFragment2too,像这样:

我可以Fragment3再次进行第二次交易,如下所示:

它似乎有效,但我知道情况不应该如此。像这样使用它对应用程序稳定性有危险吗?有人可以向我解释一下这个案例,为什么它会这样以及如何工作。

我知道我应该在其中使用Framelayout并添加/替换 Fragment 但就我而言,我没有时间更改它。

0 投票
1 回答
81 浏览

android - 重新创建活动后,片段后台堆栈中的两个 android ViewPager 没有正确出现

我的 Android 应用程序只有一个活动,并且所有片段都在一个框架布局中添加或替换。

问题是当我在片段后台堆栈中有两个不同的视图分页器并且重新创建活动时,第二个视图分页器作为第一个视图分页器出现。

下面是我如何按照片段发生的顺序将片段添加到后台堆栈,因此 3 是重新创建活动后出现的片段。

  1. setupPlacesEventMainView(),这是一个使用 FragmentStatePagerAdapter 的 viewpager。(在重新创建活动后正确显示)
  2. setupPlaceDetailViewPager,这是一个使用 FragmentStatePagerAdapter 的 viewpager。(问题: PlacesEventMainViewPager 显示在这里而不是 PlaceDetailViewPager。即使我没有导航到 EventSpecials 也会出现问题)
  3. setupEventSpecials(),这是一个列表片段。(重新创建活动后正确显示)

将 PlacesEventMainViewPager 添加到后台堆栈

将 PlaceDetailViewPager 添加到后台堆栈

将 SpecialsList 添加到 backstack

碎片包含什么。

  • PlacesEventMainViewPager 包含 3 个列表片段。
  • PlaceDetailViewPager 包含 2 个列表片段
  • SpecialsList 是 1 个列表片段。

我可以通过单击 PlacesEventMainViewPager 片段中的一项来访问 PlaceDetailViewPager 片段。我可以通过单击 PlaceDetailViewPager 片段中的按钮来访问 SpecialsList。

如果您需要更多详细信息,请告诉我。谢谢!

0 投票
1 回答
107 浏览

android - 按下向上按钮时正确的后台导航

我使用 onBackPressed() 在 MainActivity(有很多片段)中的 Back 按钮上实现了 backstack 导航。我想在按下向上按钮时实现相同的后台导航。问题是我只想要一个片段中的向上按钮,但是当我在所需片段上按下向上按钮时,向上按钮出现在每个片段上。甚至 setDisplayHomeAsEnabled(false) 也不起作用。如何仅在一个片段中有向上按钮?

0 投票
1 回答
599 浏览

android - 如何修复 android 中的 Fragment backstack OutOfMemory 问题?

在我的 android 应用程序中,我有列表视图和列表项详细信息视图。

列表视图和详细信息视图是一个活动中的片段。最初,我将列表片段加载到活动中,如果用户单击列表项,它将用详细片段替换相同的视图,并将该片段添加到一个活动中的后台堆栈。

代码:

如果用户单击后退按钮,它将进入列表视图,这很好。

所以我的问题是,如果用户在列表项应用程序上单击多次(超过 10 次)会因OutOfMemory崩溃

我搜索过,人们说这是 backstack 的正常行为,即使从堆栈中弹出这些片段,它也不会从内存中清除添加的片段。

由于业务需求,我不能为此进行两项活动。

我的方法不是列表和详细信息片段具有相同的活动并通过使用 backstack 来交还导航是最好的方式吗?

如果不是我应该遵循的最佳选择是什么?

0 投票
0 回答
256 浏览

android - 如何通过配置更改处理片段中的回栈?

java.lang.IllegalStateException:onSaveInstanceState 后无法执行此操作

”。

请有人向我解释在方向改变后处理回栈片段的正确方法是什么。[注意:当我尝试从片段 3 提交到新片段 5 时,它崩溃了。]