我正在构建一个简单的计时器应用程序,其中我使用 android 计时器来跟踪经过的时间。但是当我启动计时器并将方向更改为横向时,计时器会重置并再次显示 00:00。我希望它保持其价值。
布局为portrait
and landscape
是不同的
portrait--> Layout
folder
landscape->layout_land
folder
<Chronometer
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/chronometer1"
android:layout_above="@+id/button2"
android:textStyle="bold"
android:textColor="@color/Indigo"
android:text="Chronometer"
android:layout_toLeftOf="@+id/save_btn"
android:typeface="serif"
android:textSize="40dp"/>
这是医生所说的:
重新创建活动 http://developer.android.com/training/basics/activity-lifecycle/recreating.html
注意:每次用户旋转屏幕时,您的 Activity 都会被销毁并重新创建。当屏幕改变方向时,系统会销毁并重新创建前台 Activity,因为屏幕配置已更改,并且您的 Activity 可能需要加载替代资源(例如布局)。
如果你需要保存活动的状态 http://developer.android.com/training/basics/activity-lifecycle/recreating.html#SaveState在改变方向之前,你必须覆盖onSaveInstanceState()
。此方法将帮助您保存方向更改后想要恢复的所有值。然后将它们恢复到onCreate()
method.
这是一个例子:
String myVar;
/*
...
*/
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save myVar's value in saveInstanceState bundle
savedInstanceState.putString("myVar", myVar);
super.onSaveInstanceState(savedInstanceState);
}
现在在创建活动时检索它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// savedInstanceState is the bundle in which we stored myVar in onSaveInstanceState() method above
// savedInstanceState == null means that activity is being created a first time
if (savedInstanceState == null) {
// some code here
myVar = "first value";
} else { // savedInstance != null means that activity is being recreated and onSaveInstanceState() has already been called.
myVar = savedInstanceState.getString("myVar");
}
/*
...
*/
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)