保存以编程方式为片段创建的视图并在 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 中恢复的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式添加的视图不正常

以编程方式创建形状视图并在集合视图单元格上使用

以编程方式创建输入附件视图

在片段中以编程方式在视图中包含布局

如何以编程方式创建默认滑块值?

以编程方式使用堆栈视图