2013-02-21 38 views
0

我在我的應用程序中有兩個活動,現在我想保存editText的文本,當用戶轉到下一個時,由用戶給出並返回到MainActivity之後值應該放在editText中我的代碼是在活動切換期間無法保存日期

public class MainActivity extends Activity { 

EditText editText; 
String name = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    editText = (EditText) findViewById(R.id.editText1); 
    if(savedInstanceState == null){ 
    editText.setText("Some Thing"); 
    }else{ 
     String newValue = savedInstanceState.getString("myData"); 
     editText.setText(newValue); 
    } 
    Log.d("ARSHAY....", "in onCreate()"); 
} 

@Override 
protected void onSaveInstanceState(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    super.onSaveInstanceState(savedInstanceState); 
    editText = (EditText) findViewById(R.id.editText1); 
    name = editText.getText().toString(); 
    savedInstanceState.putString("myData", name); 

} 


public void goToNextArsh(View view) { 


    Intent intent = new Intent(MainActivity.this, Second.class); 
    startActivity(intent); 
} 
    } 

但是這不會在返回到MainActivity時設置新輸入。 確實知道如何做到這一點?

+1

http://developer.android.com/training/basics/data-storage/index.html – donfede 2013-02-21 04:20:55

+0

使用[SharedPreference](HTTP:// developer.android.com/reference/android/content/SharedPreferences.html)。這裏是一個[示例](http://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values) – Renjith 2013-02-21 04:29:10

+0

首先!感謝你們倆。我嘗試了這些所有的方法,我得到editText的價值像'getPreferences(MODE_PRIVATE).edit()。putString(「som.arshay.retreive.data」,editText.getText()。toString())。 '在onPasue()方法中獲取值,並像'String newValue = getPreferences(MODE_PRIVATE).getString(「som.arshay.retreive.data」,editText.getText()。toString()); \t \t \t editText.setText(newValue);'。但仍然無法實現我想要的結果... – 2013-02-21 04:55:42

回答

1

首先你爲什麼要使用editText = (EditText) findViewById(R.id.editText1);兩次全部。僅在onCreate()

使用和使用此代碼

@Override 
protected void onPause() { 
    SharedPreferences pref = getSharedPreferences("YOUR_KEY", MODE_PRIVATE); 
    Editor edit = pref.edit(); 
    edit.putString("som.arshay.retreive.data", editText.getText().toString()); 
    edit.commit(); 
    super.onPause(); 
} 

@Override 
protected void onResume() { 
    SharedPreferences pref = getSharedPreferences("YOUR_KEY", MODE_PRIVATE); 
    String newValue = pref.getString("som.arshay.retreive.data", ""); 
    editText.setText(newValue); 
    super.onResume(); 
} 
+0

好吧!這是有效的,但是這個代碼中仍然存在一個bug,那就是我無法在首次啓動時在'onCreate()'中設置的'editText'中看到值。請提出一些解決方案。 – 2013-02-21 11:09:26

0

使用這些方法onSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle savedInstanceState)