旋转设备丢失数据
问题描述:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
String phonenumber = phoneNumberLogin.getText().toString();
savedInstanceState.putString("PhoneNumber", phonenumber);
super.onSaveInstanceState(savedInstanceState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
String phonenumber= savedInstanceState.getString("PhoneNumber");
if (phonenumber != null) {
EditText FirstName = (EditText) findViewById(R.id.editTextname);
FirstName.setText(phonenumber);
}
super.onRestoreInstanceState(savedInstanceState);
}
我有一个editText(用于输入电话号码)。在纵向模式下输入数字,然后旋转手机,输入的数据就消失了。我保存数据savedInstanceState,但我不知道如何恢复我旋转手机时输入的数据。请任何帮助。旋转设备丢失数据
答
简单的说就是避免轮流重新创建活动。改变你的AndroidManifest.xml包括android:configChanges="keyboardHidden|orientation"
这样的:
<activity android:name="MyActivity" android:configChanges="keyboardHidden|orientation"></activity>
您的布局将需要支持任何方向的设备支持。另外还有一些其他的事情要考虑:Why not use always android:configChanges="keyboardHidden|orientation"?
答
尝试从onRestoreInstanceState获得移动电话号码的onCreate方法 或尝试这样的事:
@Override
public Object onRetainNonConfigurationInstance()
{
return phoneNumberLogin.getText().toString();
}
和的onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
String phonenumber= (String)getLastNonConfigurationInstance();
if (phonenumber != null) {
EditText FirstName = (EditText) findViewById(R.id.editTextname);
FirstName.setText(phonenumber);
}
}