如何刷新片段'onResume?
Posted
技术标签:
【中文标题】如何刷新片段\'onResume?【英文标题】:How to refresh fragments 'onResume?'如何刷新片段'onResume? 【发布时间】:2013-12-15 18:41:59 【问题描述】:我想刷新来自 Activitiy 的片段。 (我们称之为活动A) 活动 A 包含片段。
当我完成活动 B 时,活动 A 应该刷新片段。
我在想这会在 onResume 中完成吗?我尝试通过意图简单地重新启动活动,但这对可用性不友好。
那么当我恢复活动时如何刷新片段?
【问题讨论】:
“刷新”是什么意思?你的意思是要重新加载数据,还是要让 A 重新显示,还是? ...“刷新片段”是什么意思?! 基本上我想重新加载数据。因为我想“重启”片段。所以每个片段中的 OnCreateView 都会被再次调用。 (因此在那里重新加载数据) 我会将设置代码放在 onStart() 中。 onCreate() 和/或 onCreateView() 方法只会使布局膨胀并连接小部件(findViewById() 的东西)。 我刚刚发现您可以在片段中使用 OnStart...我是 android 新手,所以是的...无论如何,谢谢! 【参考方案1】:把这段代码放进去
onResume()
例如,当你回到你的片段时,你想更新你的列表视图。
@Override
public void onResume()
super.onResume();
if (allowRefresh)
allowRefresh = false;
lst_applist = db.load_apps();
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
这里getFragmentManager().beginTransaction().detach(this).attach(this).commit();
此行分离并重新附加片段,以便更新您的内容。
【讨论】:
如何从活动中做到这一点? 我可以在这里写什么(这个) 如果你想将此逻辑移动到Activity中,请在onPostResume()方法内进行以避免Activity state lost error 此答案缺少的是您需要更改allowRefresh
值的其他位置。在这种情况下,在onPause
中应该是true
,然后在onDestroyView
中应该是false
【参考方案2】:
总是在显示片段之前调用onResume()
。即使是第一次创建片段。因此,您只需将您的地址从 onViewCreated()
移动到 onResume
。
@Override
public void onResume()
super.onResume();
//move your code from onViewCreated() here
【讨论】:
【参考方案3】:我同意 Mehul 但你也可以这样做。如果你想替换你的片段,你可以说
@Override
public void onResume()
super.onResume();
if (allowRefresh)
allowRefresh = false;
lst_applist = db.load_apps();
getFragmentManager().beginTransaction().replace(Fragment_Container,fragment).commit();
【讨论】:
以上是关于如何刷新片段'onResume?的主要内容,如果未能解决你的问题,请参考以下文章
保存以编程方式为片段创建的视图并在 onresume 中恢复
替换片段后未调用 OnDestroyView 和 OnResume