android - 设计问题 - 从 TabLayout 启动新 fragment

标签 android android-fragments android-tablayout

我不太确定是否有解决以下设计问题的“最佳方法”。

我的 MainActivity 中有一个带有 2 个选项卡的 Tablayout。每个选项卡都是一个不同的 fragment 。我转到 Tab1 并查看 Fragment1。我需要从 Fragment 1 启动一个新的 Fragment (1A),但我不确定这样做的最佳方式?我在考虑其中之一。

A) 从我的 MainActivity 中取出选项卡并将它们放在一个单独的 MainFragment 中,该 MainFragment 随应用程序一起启动。这样,当用户启动 Fragment 1A 时,它只会用选项卡替换 1 MainFragment。

B) 将 Tabs 保留在 MainActivity 中,并在 Tab1 下找到将 Fragment 1 替换为 Fragment 1A 的方法。

如有任何建议,我们将不胜感激。谢谢。

最佳答案

我认为你不应该做这两点...... Tab1 下可见的 Frag1 应该包含该 View 的所有布局(包括初始隐藏)和逻辑。如果你需要显示 smth new 它可能更小(然后是弹出窗口、对话框等)或扩展一些布局,也许有一些动画(你仍然可以在 Fragment 中使用 ViewPagerViewPager 中,禁用触摸事件并以编程方式操作滚动...)。

当用户选择的 Action 旨在显示 smth so-much-improtant 之前的屏幕根本不需要时,您可能应该打开新的 Activity

附言。如果您坚持要替换当前的“屏幕”(实际上是 Activity 的内容),请注意 Tab1 的标题可能不代表包含 Frag1A 的内容。这在很大程度上取决于您那里有什么样的内容。您可以考虑将 TabLayout/RecyclerView 移动到例如FrameLayout 容器并将 Frag1A 添加到其中,覆盖整个先前的 View ,包括选项卡。在当前的设计指南中,您甚至可以找到显示新 fragment 的建议解决方案 - 使用圆形显示动画

关于android - 设计问题 - 从 TabLayout 启动新 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753899/

相关文章:

java - 将东向和北向转换为经纬度坐标

java - 空指针异常 : findViewById returns null in Dialog

android - 如果我在这个 fragment 之间导航多次,如何只为每个 fragment 保留一个实例

java - 带抽屉导航的异步任务

android - 尝试从不同的类实现方法

android - 如何将返回堆栈添加到我的选项卡布局?

android - 检测 WiFi 或移动网络

android - 在 gridview 中使用从右到左的方向

android - Mosby MVP - 如何在 onDestroyView() 之后重新创建 Fragment 的状态?

java - Android:TabLayout如何以编程方式设置height = 0?