希望你们能为我澄清一些事情。
我已经使用 Android 大约 6 个月了,但我仍然对 Activity 和 Fragment 之间通信的最佳方式感到困惑。我已经阅读了关于 android developer site 的信息.
现在我 100% 肯定地知道接口(interface)是从 Fragment 到 Activity 的最佳通信方式。 IE。在您的 Fragment 中创建一个接口(interface)并让您的 Activity 实现它。通过这种方式,您可以从 Fragment 中的接口(interface)调用该方法,并由 Activity(实现该接口(interface))处理它。
这是我不确定的。 android 开发者网站说,为了与 Fragment 通信,您必须将对象放在 Bundle 中。
Bundle bundle = new Bundle();
bundle.putInt(SOME_IDENTIFIER, myInt);
现在我已经知道,当我有相当多的功能可以分离时,我会时不时地使用单例类。假设我有一个名为 PersistenceService 的单例,我在其中处理所有与持久性相关的内容,例如在 SharedPreferences 中保存一些内容。 PersistenceService 将保存类似 putMyString(String key, String myString) 或 putSomeObject(String key, SomeObject someObj) 的方法。这样一来,类就不必自己处理持久性,而只需调用 PersistenceService 即可。
现在假设我必须更新 Fragment 中的某些内容、TextView 或其他内容。 这就是我所做的:
String myString = PersistenceService.getInstance(getActivity()).getMyString(someKey);
textView.setText(myString);
我传入一个上下文 (getActivity()),因为我需要它来获取 SharedPreferences。
现在我的实际问题是:
我是否在 Activity 中检索我的数据并通过其 Bundle 将其传递给所需的 Fragment?或者我只是在我的 Fragment 中直接引用我的 Singleton 并直接访问那里的数据。
我没有被卡住或任何东西,但我想知道你们会推荐什么。 非常感谢任何建议、评论、信息等。
最佳答案
这是一个非常宽泛的问题,正如实用主义思维和学习一书中所说,软件中大多数问题的答案是“这一切都取决于!”。
确实如此,这真的完全取决于,软件中没有硬性规定,“总是”和“从不”是非常强大的词,不应该在软件中使用,所以,总是说“bundle ”信息或者永远不要选择单例在软件方面有点愚蠢,所以,与其告诉你确切使用什么,不如问问自己什么更适合你的需求,比如可伸缩性、可扩展性、可管理性等。对于示例:
如果你选择 Bundle,你给了你的 fragment 一些灵 active ,你正在创建某种独立的组件,准备好使用你提供的任何信息,另一方面,如果你知道你只需要那个 fragment 放置,并且您将传递的信息在某种程度上很复杂(不能使用 bundle 传递),为什么要复杂化这么多?如果 Singleton 的工作简单明了,就选择 Singleton。
我希望我的观点在这里得到很好的解释,对于一种或另一种方式没有硬性规定,只要尽可能勤奋,不要仅仅因为懒惰或疏忽而采用这种或另一种方式,而是在值得的情况下成为分析师根据您的需要采取一种或另一种方式,并始终认为这不是因为您这次采用了那种方式,这对您的所有场景都是如此。
希望对您有所帮助!
问候!
关于Android最佳实践——Activity与Fragment之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28157505/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来