Android 更改方向时保存活动状态(不仅仅是某些变量)
我意识到在这个话题上已经有很多问题了。 但我甚至不知道保存活动状态的基本方法Android 更改方向时保存活动状态(不仅仅是某些变量),android,android-activity,savestate,Android,Android Activity,Savestate,我意识到在这个话题上已经有很多问题了。 但我甚至不知道保存活动状态的基本方法 (请参阅下面的屏幕截图)当应用程序启动时 1) 滚动视图项目1、2、3、4可见 2) 表包含因Gainer按钮而填充的数据 如下面的屏幕截图所示,当应用程序以纵向模式运行时,,I 1) 向下滚动至滚动视图项目4,5,6 2) 按下“丢失”按钮,使按钮下表中的数据相应更改 3) 我甚至会动态地更改图形的内容(我还并没有这样做) 现在我切换到横向模式所以 1) ScrollView显示ScrollView项目1,2,
(请参阅下面的屏幕截图)当应用程序启动时 1) 滚动视图项目1、2、3、4可见 2) 表包含因Gainer按钮而填充的数据
如下面的屏幕截图所示,当应用程序以纵向模式运行时,,I 1) 向下滚动至滚动视图项目4,5,6 2) 按下“丢失”按钮,使按钮下表中的数据相应更改 3) 我甚至会动态地更改图形的内容(我还并没有这样做)
现在我切换到横向模式所以 1) ScrollView显示ScrollView项目1,2,3,4 2) 表显示了由于按下Gainer按钮而填充的数据 3) 这个图就是这样,因为我还没有改变它(稍后我会改变)
因此,当我改变方向时,我的活动就会重新启动。所以,如果用户在一个方向上执行某些任务,并且他更改了方向,那么整个过程都将丢失 我知道我需要保存活动的状态,并在方向更改时恢复它。 但我不知道该从哪里开始,该保存什么 任何帮助都是救命稻草强> 选项#1:覆盖
活动的onSaveInstanceState()
,并将所需的任何信息放入提供的捆绑包中。您的新活动实例将在onRestoreInstanceState()
(或onCreate()
)中接收该捆绑包
选项2:覆盖活动的onretainonconfigurationinstance()
,并返回一些表示您状态的对象。您的新活动实例可以调用getLastNonConfigurationInstance()
来检索该对象,因此新活动可以应用该信息。不过,要小心,不要让旧活动在对象中返回某些内容,这些内容将引用保留回旧活动(例如,小部件、常规内部类的实例)
选项3:将此活动转换为片段。让片段调用setRetainInstance(true)代码>在初始设置期间自动启动。通过FragmentTransaction
将片段动态添加到某些活动中。现在,当配置更改时,片段被保留,因此所有小部件和状态都被保留
这是目前推荐的三种方法