android是否在方向更改期间重用视图

时间:2010-09-23 18:43:09

标签: android

在方向更改期间,android会重复使用视图吗? 我的活动中有一个进度条。我将进度设置为50%,然后进行方向更改。但由于某种原因,进度条在定位后保持50%。我在我的活动的onCreate()中调用了setprogress(0)。我把'printf'放在我调用setProgress()的任何地方,我还不明白为什么每次我改变方向时进度条保持50%?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的活动被拆除并重新创建,但具有ID设置的视图会保存其实例状态,以便在重新创建后将其传递给将来的自我。这在onRestoreInstanceState中恢复。由于在onRestoreInstanceState之后调用了onCreate,因此您在onCreate中设置的值会被之前保存的数据覆盖。

如果您想在此步骤发生后操纵您的观看,onPostCreate可能就是您要找的。

如果您想详细了解此过程的工作原理(可能在您自己的自定义视图中实现此保存/恢复行为),请参阅View#onSaveInstanceStateView#onRestoreInstanceState

答案 1 :(得分:0)

看起来您正在对onCreate文件中包含orientation/keyboardHidden的配置的配置更改施加manifest方法。从清单XML中删除活动中的android:configChanges,然后从您的活动中移除public void onConfigurationChanged(Configuration newConfig)方法。

或者,只需在onConfigurationChanged方法

中将进度条的进度设置为0即可

如果要实现onConfigurationChanged方法,请确保在清单XML文件中为所需活动定义它。

例如:

<activity
      android:name="MyActivity"
      android:configChanges="orientation|keyboardHidden" />
然后在方向或键盘隐藏配置发生时调用

onConfigurationChanged