【问题标题】:Save and Retrieve array of views in android在android中保存和检索视图数组
【发布时间】:2016-10-24 20:50:27
【问题描述】:

在画布中,用户可以创建像 EditText、ImageViews 这样的视图,并且可以将它们拖放到视图中。单击带有以下代码的按钮时,所有这些视图都将添加到数组列表中:

for(int index=0; index<((ViewGroup)mDragLayer).getChildCount(); ++index) {
                    View nextChild = ((ViewGroup)mDragLayer).getChildAt(index);
                    elementList.add(nextChild);
}

当用户在同一个屏幕上时,可以在elementList 的帮助下使用以下代码填充相同的视图:

for(int i = 0; i < elementList.size(); i++){
        mDragLayer.addView(elementList.get(i));
}

问题是,elementList 如何在后期(杀死应用程序后重新启动)用于填充视图。我曾尝试使用共享首选项但失败了。

非常感谢任何建议。

【问题讨论】:

    标签: android canvas view save data-retrieval


    【解决方案1】:

    如果 Android 系统终止了您的应用,您将无法保留视图。相反,您可以保留重新创建这些视图所需的模型。您可以为此使用SharedPreferences 或数据库。

    使用活动或片段回调来确定是否存在需要重新创建的状态,然后构建自己的逻辑,以根据您在应用被终止之前存储的数据重新创建视图层次结构。您可以重新创建所有内容,如果需要非常精确,您甚至可以存储每个视图的位置,然后在布局参数中使用这些值来重新构建 UI。

    【讨论】:

    • 你的意思是不能将 textview 信息直接存储在共享首选项中?
    • 如果转换为String或String[]但没有TextView对象,则可以保存textview信息。
    • 所有视图对象都具有与封闭活动或片段相同的生命周期。一旦活动被杀死,整个视图层次结构就会被杀死。您可以保留重新创建视图所需的数据,它可以是文本、位置、颜色等。但您不能保留视图本身,您必须重新创建它。
    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多