我正在创建一个由静态视图和动态创建视图组成的活动组成的Android应用程序。该活动包含保存在XML文件中的UI元素以及基于模型类的内容动态创建的UI元素。 (因为在我的模型类中有一个数组,并且将为数组中的每个元素创建一个EditText ..并且将创建包含不同阵列中的每个元素的微调器)在动态创建的UI中保存和恢复实例状态?
通常的保存方法是什么并在涉及动态创建的UI元素时恢复应用程序的状态?因为我不会一直知道哪个UI元素会一次存在!目前,当设备方向改变时,我的绑定代码只是重新加载数据库中的数据,并且丢失了用户所做的任何更改。
我已经在Google/SO上看了一遍,因此我还没有发现任何与此问题相关的内容。
感谢所有
编辑: 对于任何人遇到这样的未来,我也Yakiv的做法,并略加修改清盘这一点:
for (int i = 0; i < views.size(); i++) {
View currentView = views.get(i);
if (currentView instanceof CheckBox) {
outState.putBoolean("VIEW"+i, (((CheckBox) currentView).isChecked()));
} else if (currentView instanceof EditText) {
outState.putString("VIEW"+i, ((EditText) currentView).getText().toString());
} else if (currentView instanceof Spinner) {
//.....etc. etc.
}
}
再次感谢Yakiv为了真棒的想法。
你在搜索时很糟糕,这里有一个答案 - http://stackoverflow.com/questions/151777/saving-activity-state-in-android。 –
谢谢您的链接,但正如我对Yakiv的评论回复的,这是最简单的情况,您可以知道您拥有哪些UI元素,并且可以轻松地将它们存储在捆绑包中。我不知道我有哪些UI元素,因为它们是动态生成的。该活动可能有5个编辑文本,也可能有50个,这使得难以将这些值添加到包中。 – user2459186