我是android新手。我正在做一个关于数字计算的示例项目。我正在使用纵向和横向布局。每当我更改方向时,我的活动都是新创建的,所有先前输入的值都会丢失。因此,我尝试通过android:configChanges="keyboardHidden|screenSize|orientation"
停止活动重新设置,并仅将方向设置为android:screenOrientation="portrait"
。但这使我的肖像布局适合横向模式。但我不想要这个。我需要在方向更改时加载我单独的纵向和横向布局,使用之前创建的相同值集(即加载不同的布局而不进行活动重新创建)。
我还尝试使用重写方法,如onConfigurationchanged,onSaveInstanceState,onRestoreInstanceState。但是在使用onConfigurationchanged方法时仍会丢失值,并且在使用onSaveInstanceState和onRestoreInstanceState方法时会重新创建活动(此处仍会检索以前的值)。 对此有何解决方案? 提前谢谢。
答案 0 :(得分:3)
要解决此问题,您需要在保存的实例状态
中保存和检索数据@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
// Example to save the value of editText01 in SavedInstanceState
String stateToSave = editText01.getText().toString();
outState.putString("saved_state", stateToSave);
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
//To Retrieve data from "saved_state"
String stateSaved = savedInstanceState.getString("saved_state");
edittextEditState.setText(stateSaved);
}
}
}
答案 1 :(得分:0)
您应该查看活动的onPause{}
和onResume{}
方法。因为无论何时更改方向,活动都会暂停,然后再次重新创建,以便丢失数据。为了更好地理解你应该看一下活动的生命周期
http://developer.android.com/reference/android/app/Activity.html
......:)
答案 2 :(得分:0)
删除android:screenOrientation =“portrait”并给出此代码,android:configChanges =“keyboardHidden | screenSize”