保存以编程方式为片段创建的视图并在 onresume 中恢复
Posted
技术标签:
【中文标题】保存以编程方式为片段创建的视图并在 onresume 中恢复【英文标题】:save view created programmatically for a fragment and restore in onresume 【发布时间】:2016-03-23 09:13:45 【问题描述】:在我的应用程序中,我有一个用于管理 6 个片段的选项卡的活动。我有一些片段,我必须根据从 web 服务下载的一些数据以编程方式创建一些视图。如何保存我以编程方式创建的视图并将它们恢复到片段的简历中,而无需每次都重新创建它们?
【问题讨论】:
【参考方案1】:您应该为您的片段使用单例模式。
Java 中的 singleton 是一个类,只能为其创建一个实例,为该实例提供全局访问点。单例模式描述了如何归档。
例如:
public class YourFragment extends Fragment
private static YourFragment uniqInstance;
private YourFragment ()
public static YourFragment getInstance()
if (uniqInstance == null)
uniqInstance = new YourFragment();
return uniqInstance;
.........
当你想访问你的片段时应该调用:
YourFragment.getInstance();
如果你想访问片段中的方法应该调用:
YourFragment.getInstance().yourMethod();
当然你访问的方法必须是公开的。
希望对你有帮助!
【讨论】:
感谢您的回答,它在某些情况下很有用,但在我的情况下它不是最佳解决方案。我已经只调用了一次片段的创建。在等待答案时,我自己找到了某种解决方案。我已将片段的根视图设为片段本身的变量,并且每次调用 OnCreateView 时,我只会在视图为 null 时膨胀视图,否则它会返回我之前创建的相同视图。现在的问题是当我检测到来自网络服务的数据更新时更新视图以上是关于保存以编程方式为片段创建的视图并在 onresume 中恢复的主要内容,如果未能解决你的问题,请参考以下文章