从水平切换到垂直时,我的应用程序会重置我的整数 [重复]
Posted
技术标签:
【中文标题】从水平切换到垂直时,我的应用程序会重置我的整数 [重复]【英文标题】:My app resets my integers when switching from horizontal to vertical [duplicate] 【发布时间】:2014-07-28 18:06:22 【问题描述】:所以这是我在 android 上的第一个应用程序,它运行良好。但是,当我将屏幕倾斜到水平视图时,我的整数会重置为零。如果我从水平开始然后将其切换到垂直,它也会将整数重置为零。我怎样才能让它不重置而只是切换?
【问题讨论】:
每次倾斜设备时,您的应用都会重新启动 【参考方案1】:覆盖onSaveInstanceState(Bundle outState)
方法。将您的数据放入outState
捆绑包中,然后在onCreate(Bundle savedInstanceState)
中,从savedInstanceState
中提取数据。
如果您的数据比普通整数更复杂,并且没有实现Parcelable
接口,请使用Fragment
。
【讨论】:
【参考方案2】:每次倾斜设备时,您的应用都会重新运行一个活动。在旋转之前,您必须将数据保存在共享首选项文件中,因为旋转会终止 Activity,以便它可以以新的方向再次运行。
有关如何存储数据,请参阅此链接:http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState
【讨论】:
使用SharedPreferences
在方向变化之间存储数据是多余的。而且,它涉及到磁盘I/O,所以方向变化会比较慢。
@deville,感谢您的建议,您有什么建议?
相反,我建议覆盖onSaveInstanceState(Bundle outState)
方法。将您的数据放入outState
捆绑包中,然后在onCreate(Bundle savedInstanceState)
中,从savedInstanceState
中提取它。【参考方案3】:
如果您不想保存数据,一个快速的“修复”方法是进入您的 AndroidManifest.xml 文件并执行以下操作:
-
选择活动(我假设它是您的 MainActivity)
找到标有“屏幕方向”的字段
将其更改为“纵向”(以防止手机水平倾斜时屏幕发生变化)
您也可以在您的 AndroidManifest 文件的 xml 中执行此操作,如下所示:
<activity
...
android:name="yourApp.MainActivity"
android:screenOrientation="portrait"
...
</activity>
编辑 - 请记住
“这是我在安卓上的第一个应用”
如果您只是在测试,锁定方向是阻止这种行为的一种完全合理的方法,但它绝不是任何“真实”项目中的可行解决方案。
【讨论】:
永远不要这样做。这是最后的手段。 锁定方向不是 OP 要求的“修复”。锁定方向是一项设计决策 - 它可能适用于某些应用程序设计,但不应仅用于防止配置更改以防止重新创建Activity
。
“如果您只是在测试,锁定方向是阻止这种行为的一种完全合理的方法” - 不,不是。在测试时阻止它发生的一个完全合理的方法就是不要旋转设备。
不是每个人的手都这么稳...以上是关于从水平切换到垂直时,我的应用程序会重置我的整数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章