我正在按下按钮点击一个视图,用户可以添加他喜欢的任意数量的视图,一切都很好我让它工作,但现在问题是当我返回一个活动并再次来到我的动态生成的活动生成的每个视图都消失了。如果我进入下一个活动并回到膨胀的活动,情况类似。我知道onSaveInstance
和onRestoreSaveInstance
。但是如何将视图信息放在onSaveInstanceState
的捆绑包中?请注意我的视图是动态生成的,即在按钮上单击,我想知道如何保持我的活动状态。
你是如何去做的?
答案 0 :(得分:4)
我认为您应该实施某种逻辑来帮助您恢复Views
的状态。所以你应该设计一个类,让我们说ViewDetail
以某种方式保存你正在添加的Views
的详细信息....类型,维度等。这个类应该实现Parcelable
所以您可以将其添加到bundle
。
因此,每当用户添加新的ArrayList<ViewDetail>
时,您都会保留myViews
,View
,并创建一个新的ViewDetail
对象,并将其添加到myViews
} array。
然后保存您的Views
并使用这些对象恢复它们:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//save your view states
outState.putParcelableArrayList("MY_VIEWS",myViews);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//get the views back...
myViews=savedInstanceState.getParcelableArrayList("MY_VIEWS");
//TODO: add the views back to your Activity
}
答案 1 :(得分:1)
由于你的应用程序可能在任何时候被完全杀死而没有通知你必须提供堆内存的长期存储
如果您的活动已经终止(并且可以在任何时间),您只需要恢复所有视图。当它在终止后再次激活时,它会通过onCreate()方法 - 这将是恢复活动状态的适当场所。
只有在应用程序/活动被销毁之前被保证要调用的回调才是onPause() - 这是将视图状态保存到长期堆外存储中的适当位置。