我有一个静态textview,它在XML中设置了一个默认值。稍后,我将该变量设置为其他内容,但每当方向更改时,静态变量的值将返回到默认值,即使我没有重新初始化它。为什么会这样?即使在调用onCreate()之后,该值是否仍然存在?
答案 0 :(得分:1)
当onCreate()
被调用时,我猜你也正常呼叫setContentView()
。这会使用默认值重新绘制所有Views
。您需要处理配置更改
See this answer of mine关于如何处理它。推荐的方法是使用onSavedInstanceState
但我通常自己处理它并且没有任何问题......但是
答案 1 :(得分:0)
这与lifecycle of an Android app.有关。每当您轮换时,您的应用程序都会经历所有生命周期方法调用。您需要将当前状态存储在Bundle中,并在轮换发生后在onCreate
中恢复该数据。
答案 2 :(得分:0)
在方向更改期间,Android会重新创建所有布局。要保存窗口小部件的状态,只需将id
分配给TextView元素:
<TextView
android:id="@+id/tv_caption"
...
/>