Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改方向时保存活动状态(不仅仅是某些变量)_Android_Android Activity_Savestate - Fatal编程技术网

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
将片段动态添加到某些活动中。现在,当配置更改时,片段被保留,因此所有小部件和状态都被保留

这是目前推荐的三种方法