在为客户端启动新应用程序时,我在再次问自己关于谁应该负责加载数据的同一个问题:活动还是片段。我已经为不同的应用程序采取了这两种选择,我想知道哪种模式是最好的,根据您的意见:
这允许有一些片段,这些片段只是被提供给一堆对象来显示。他们对加载数据和我们如何加载数据一无所知。
另一方面,活动使用所需的任何方法加载数据(例如,最初加载最新的50个条目,在搜索时加载搜索结果)。然后将它传递给显示它的片段。加载数据的方法可以是任何方法(从服务、从数据库、...片段只知道POJO)
这是一种MVC架构,其中活动是控制器,片段是视图。
在这种模式中,片段是应用程序的自治片段。他们知道如何加载他们正在显示的数据,以及如何向用户显示这些数据。
理想情况下,带有UI的activity
和fragment
都不应该包含任何“模型”逻辑--这些类应该是轻量级的,并且只负责UI逻辑。但是,当您决定创建一个单独的模型对象时,您会面临一个两难的选择:在哪里初始化和存储这个对象,以及如何处理配置更改。这里有一些小窍门:
您可以创建一个模型fragment
,不带UI,使其保留实例以处理配置更改(这是跨config.changes保存数据的最简单方法,不会遇到麻烦),并通过findfragmentbyid()
在任何需要的地方检索它。只需在它内部进行一次所有昂贵的操作(当然,使用后台线程),存储数据,就完成了。有关更多信息,请参见添加不带UI的片段部分。
UPD:现在有一种更好的方法来处理配置更改:来自谷歌架构组件的ViewModel。这里有一个很好的例子。
代码如下:- 产品片段: 我不知道我错在哪里。我已经搜索了错误,甚至尝试了以下链接的解决方案: Fragment MyFragment not attached to activity 我在SO上提出问题,但没有得到响应/答案。可能有一个小错误、语法/格式问题或重复问题,但我的案例可能与其他人的不同。 因此,请提供帮助并作出答复。 谢谢。 --编辑-- 家庭活动: 致命异常:主进程:com.pis
在我之前提到的活动的自定义回收器视图适配器中,我想在点击我的一个元素时对碎片进行充电,例如: 这是我的片段类: 这个片段还加载了一个google Maps片段,您可以在它的布局中看到: 当我在一个项目中第一次点击时,一切正常,但当我在另一个项目中第二次点击时,我会得到以下错误:
我有一个疑问,想澄清一些关于包含多个片段的活动的观点。 我有10个片段与一个活动(HomeActivity.java)相连;此活动包含一个导航抽屉和工具栏,带有多个图标,如搜索、添加、删除、后退按钮等。 我遵循的结构如下:, 用户点击抽屉菜单中的任何项目,我正在加载片段, 碎片加载- 我正在根据HomeActivity本身中的片段更改标题名称,基于工具栏。 我的导航抽屉项目只有一个片段,在frag
在为手机和平板电脑设计时,在应用程序中使用片段而不是活动的是什么? 我们是不是应该有手机的活动和平板电脑的碎片。除了使之外,手机的碎片还有什么好处吗? android开发网站http://developer.android.com/guide/components/fragments.html在电话上说,这些片段被分成那么使用这些片段有什么意义呢?
这是我的碎片 drawable是ok的,也检查了,数据库项目,崩溃发生有时不是每次数据库更改
在Android中,当我们用一个新的片段替换容器视图时,我们可以使用replace()和addToBackStack(),因此按下back按钮就可以转到上一个片段。 但如果出现以下情况怎么办: 在Activity1中,我可以按下back按钮从fragment2转到fragment1。但当fragment2启动另一个活动时,从Activity2按下back按钮,它会将我带到Activity1中的fr