为什么使用片段?

2023-12-23

我已阅读文档并其他一些问题的主题 https://softwareengineering.stackexchange.com/q/200583/127226对于这个话题,我并没有真正被说服;我不清楚使用这种技术的局限性。

碎片现在被视为最佳实践; 每个 Activity 基本上应该支持一个或多个 Fragment而不是直接调用布局。

创建片段的目的是:

  1. 允许Activity使用许多片段,在它们之间进行更改,重用这些单元... ==>Fragment完全依赖于Context活动的,所以如果我需要一些可以在许多活动中重用和处理的通用内容,我可以创建自己的自定义布局或视图......我不会关心片段会添加的额外复杂性开发层。

  2. 更好地处理不同的分辨率==>对于平板电脑/手机来说,如果流程较长,我们可以在平板电脑中的同一活动中显示两个(或更多)片段,并在手机中一个接一个地显示。但为什么我要使用片段always ?

  3. 处理回调以在片段之间导航(即:如果用户已登录,我将显示一个片段,否则我将显示另一个片段)。 ===> 只要尝试看看 facebook SDK 登录有多少 bug 是因为这个,就知道它真的是(?)...

  4. 考虑到 Android 应用程序是基于 Activity 的...在 Activity 中添加另一个生命周期会更好地设计应用程序...我的意思是模块、场景、数据管理和连接会得到更好的设计,因为方式。 ===> 这是一个习惯于以 Fragments 的视角看待 Android SDK 和 Android Framework 的人的回答。我不认为这是错误的,但我不确定它会产生好的结果......而且它真的很抽象......

====> 为什么我总是使用它们而使我的生活变得复杂,编码更多?否则,如果它只是某些情况下的工具,为什么它是最佳实践呢?这些案例是什么?

如果我写得太多,请见谅,感谢您的宝贵时间。我希望我能引起您的注意,因为我真的需要关于这个主题的想法和经验。

最好的问候,艾哈迈德


您不应该总是使用片段。片段有其用途,例如当您想要翻入和翻出屏幕的某些部分时,或者当您想要在不同方向上大幅更改 UI 时。当它们有意义时,就使用它们。如果不这样做,请跳过它们。我发现它们在大约 10-20% 的应用程序中有意义 - 我很少看到这种需要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用片段? 的相关文章

  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • PrimeFaces 对话框参考父级

    我有一个 xhtml 页面 显示带有条目的数据表 我还有一个用于插入新条目的按钮 该按钮显示一个包含表单的对话框 插入表格用作
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下

随机推荐

  • 添加子视图动画

    我有主 UIView 在其中显示不同的数据 然后我放了一个按钮 它显示子视图 如下所示 IBAction buttonClicked id sender UIView newView UIView alloc initWithFrame C
  • 我如何确保我的秘密检索是安全的?

    目前 我正在使用 Terraform 和 Aws Secrets Manager 来存储和检索机密 我想了解我的实施是否安全 如果不安全 如何才能使其更安全 让我用我的尝试来说明 In secrets tf我创建一个像这样的秘密 这需要通过
  • 使用 OraclePreparedStatement 通过 Tomcat 8.5.9 从 java 8 写入 oracle 11.2 数据库?

    我在使用 Java 8 和 Tomcat 8 5 9 写入 Oracle 11 2 数据库时遇到问题 实际上 以下代码对于写入存储过程来说效果很好 但是在直接写入数据库时 出现错误 Context initCtx new InitialCo
  • 以编程方式安装 .mobileconfig

    我正在编写一个应用程序 以便自动执行将 Apple 移动设备连接到 WiFi 网络并将配置文件下载到设备的过程 由于它是自动化的 通过 Native Driver 等 因此所有功能都需要由应用程序本身控制 而不是发送到其他应用程序 例如 设
  • 如何将 pandas 数据分组推广到 3 个以上的维度?

    我正在使用优秀的pandas包来处理大量不同的气象诊断数据 当我将数据拼接在一起时 我很快就耗尽了维度 查看文档 可能是使用MultiIndex可能会解决我的问题 但我不确定如何将其应用到我的情况 文档显示了使用随机数据创建 MultiIn
  • 在 WinForms 应用程序中嵌入 Word 文档预览

    如何像资源管理器预览面板一样将 Word 文档嵌入到表单或用户控件中 I found 这个话题 http social msdn microsoft com Forums en csharpgeneral thread 127bd801 5
  • 如何在android studio 3.1.2中通过gradle安装geotools

    我想在我的项目中使用 geotools 所以我在我的存储库项目 gradle 中添加了 geotools lib allprojects repositories maven url http repo boundlessgeo com m
  • 在 Svelte 的 main.js 中导入本地 json

    将 JSON 导入 Svelte 的 main js 文件的模式是什么 我想 import App from App html const dataset require posts json console log dataset con
  • 面向 .NET Core 3.1 的 C++/CLI

    NET Core 3 1 添加了对 C CLI 的支持 宣布 NET Core 3 1 https devblogs microsoft com dotnet announcing net core 3 1 官方公告列出了两个新的项目模板
  • .NET Windows 服务 - 架构决策

    我目前有一个全天持续运行的 Windows 服务 它有多个启动线程 每天更新缓存的任务 每周任务进行清理 将 XML 导入 SQL Server 的 24 7 任务 每天运行大约 12 小时的任务 启动控制台应用程序来管理 ETL 这些任务
  • 在 Java8 中设置 LocalDateTime 和时区的格式

    我有这个简单的代码 DateTimeFormatter FORMATTER DateTimeFormatter ofPattern yyyyMMdd HH mm ss SSSSSS Z LocalDateTime now format FO
  • 视图中的 HttpContext.User 或 Page.User?

    如果我在 Asp net MVC 的视图中编码并且我想获取当前用户 那么使用是否更好 Page User or HttpContext User 有区别吗 Page User回报this Context User这与HttpContext
  • ChromeDriver 控制台应用程序隐藏

    我创建了一个播放器 它将使用 C 中的 selenium 和 ChromeDriver 来自动化 chrome 运行良好 我面临的问题是 当它为 ChromDriver 创建对象时 它将启动 ChromeDriver 应用程序 该应用程序会
  • 反应事件未触发

    在与 img 标签并熟悉 React 我发现我的onLoad and onError事件没有触发 在将我的使用简化为最基本的 React 组件之后 我仍然发现事件没有触发 在下面的组件中 我希望单击渲染的 div 登录到控制台 它渲染得很好
  • Woocommerce - 产品页面中的描述

    我需要在 Woocommerce 插件中添加我的 产品 描述的一些摘录 我有这样的页面 http exploreprague cz guides buddies 2 http exploreprague cz guides buddies
  • 用户使用 Azure AD 身份验证登录后调用适用于 Teams 的图形 API

    在用户使用 Azure AD 登录应用程序后 我们尝试使用 Microsoft Graph API for Teams 用户应该能够向应用程序内的 Teams 频道发送消息 我试图得到访问令牌登录用户并将其作为不记名令牌传递给图形 API
  • 如何使用 transclude 将 ngRepeat“模板”传递给 ngDirective?

    Demo http plnkr co edit TiH96FCgOGnXV0suFyJA p preview http plnkr co edit TiH96FCgOGnXV0suFyJA p preview 我有一个名为 myDirect
  • 避免壁纸横跨 5 个屏幕

    我一直面临一个问题 如何在 Android 中设置壁纸 而不将其拉伸到 5 个主屏幕 需要明确的是 我有一个分辨率为 320x480px 的资源图像 当我在 Android 中将其设置为壁纸时 它会拉伸到 5 个屏幕 但我希望它仅显示在 1
  • 不允许 > 2mb 的图像

    你好 如何检查用户是否尝试上传大于 2mb 的文件 我想否认这一点 并向尝试这样做的用户发出错误消息 我知道是这样的 但是我该如何将 50000 更改为 2mb 呢 if FILES imagefile size gt 50000 die
  • 为什么使用片段?

    我已阅读文档并其他一些问题的主题 https softwareengineering stackexchange com q 200583 127226对于这个话题 我并没有真正被说服 我不清楚使用这种技术的局限性 碎片现在被视为最佳实践