android - fragment 仅在应用程序设计为在手机和平​​板电脑上运行时才有用吗?

标签 android android-fragments

我正在开发一个论坛阅读器,我希望它只能在手机上运行,​​不能在平板电脑上运行。

应用程序最初有 3 个 View ,每个 View 都分配有一个 Activity。 例如,如果用户在“Board selection screen”上选择了一个 board,Activity 将启动,并向用户显示所选 board 的线程列表。

最近我学习了如何在 Android 应用程序中使用 fragment 。因此我决定将我的应用程序从基于 Activity 的应用程序转换为基于 Fragment 的应用程序。

尽管更改后应用程序像往常一样正常运行,但我在保存 fragment 状态时遇到了问题。我找不到让我保存 fragment 状态的事件(当我从 A fragment 切换到 B fragment 时)。最有可能的事件是 onSaveInstanceState(Bundle),但根据 API 指南,它只会在 Activity 即将停止时调用,而我的情况并非如此。

实际上我已经尝试在 onDestroyView() 中保存 getArgument() 中的状态。尽管如此,根据 API 指南,getArgument() 中的值应该只用于实例化 fragment 。虽然当我在 getArgument() 中保存状态时一切正常,但我相信我做错了。

我尝试在谷歌上搜索一些关于 Fragment 的信息。我发现大多数艺术家都建议当应用程序希望在手机和平​​板电脑上运行时,Fragment 很有用。而且我找不到任何艺术家在谈论如何在 Activity 中的几个 Fragment 之间进行屏幕切换。我开始怀疑 Fragment 只能用于支持不同的设备,而不能用于屏幕切换。

抱歉上面的垃圾。我的问题是,当我开发仅适用于手机的应用程序时,Fragment 不是很有用吗?如果我不希望我的应用程序在平板电脑上运行,我是否应该将我的应用程序改回基于 Activity 的应用程序?

最佳答案

Fragments 擅长的另一件事是它们适用于 Dialogs。基于 fragment 的对话框没有旋转手机时使用 showDialog() 通常遇到的任何问题

关于android - fragment 仅在应用程序设计为在手机和平​​板电脑上运行时才有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805194/

相关文章:

android - 在android中通过http post方法发送json对象

java - NestedScrollView 重叠工具栏(它们位于 fragment 布局内部)

android - 在多功能模块应用程序中,我在哪里加载和卸载 Koin 模块并保持其可测试性

java - 如何在 Android 的同一 Activity 中将日期从一个 fragment 传递到另一个 fragment ?

android - 为什么更新一个android应用程序可以让它出现两次?

java - 在android中保存结构化数据

java - 我们可以使用网络服务(REST)从移动设备发送到服务器的最大数据量是多少

Android Studio 无法在 Windows 10 上检测到 Android 设备

java - 如何使用 fragment (Android)在 Activity 之间保留动态Arraylist元素

android - 应用程序重启时的空白 fragment