2011-11-24 102 views
0
@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,但我不知道如何恢復我旋轉手機時輸入的數據。請任何幫助。旋轉設備丟失數據

回答

1

簡單的說就是避免輪流重新創建活動。改變你的AndroidManifest.xml包括android:configChanges="keyboardHidden|orientation"這樣的:

<activity android:name="MyActivity" android:configChanges="keyboardHidden|orientation"></activity> 

您的佈局將需要支持任何方向的設備支持。另外還有一些其他的事情要考慮:Why not use always android:configChanges="keyboardHidden|orientation"?

0

嘗試從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); 
    } 
}