旋转设备丢失数据

问题描述:

@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); 
    } 
}