2013-12-13 42 views
0

我對第一個活動有一個簡單的edittext,用戶輸入一些文本並移至第二個活動,然後從第二個活動移至第三個活動,依此類推。 現在當用戶回到第一個活動時,編輯文本應該顯示他在edittext中輸入的文本。導航活動時恢復edittext的值

SampleText= (EditText) findViewById(R.id.smpltxt); 
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

保存價值:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 

    savedInstanceState.putString("MyString", SampleText); 
} 

恢復值:

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

    String myString = savedInstanceState.getString("MyString"); 
} 

我無法獲取文本,當他回來的第一項活動。

有人能說我什麼,我哪裏錯了?

+0

你應該嘗試的應用程序類,但它可能在某些條件下麻煩。 – Dhaval

回答

1

更換

savedInstanceState.putString("MyString", SampleText); 

savedInstanceState.putString("MyString", SampleText.getText().toString()); 

還要檢查是否SampleText.getText()==null如果是沒有必要添加。

+0

@Apoorv-謝謝你的回答..但是,當我從活動A移動到B並回到活動A時,並沒有發揮作用,edittext中沒有任何內容,它顯示爲空白。 – coder

+0

你在'myString'中得到了什麼? – Apoorv

+0

@coder對此有何解決方案? –

0

我認爲默認行爲可以確保保存EditText中的文本。 反正:這是如何做到這一點:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContent(/* your layout */); 
    SampleText= (EditText) findViewById(R.id.smpltxt); 

    if (savedInstanceState != null) { 
    String myString = savedInstanceState.getString("MyString"); 
    SampleText.setText(myString); 
    } 
} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putString("MyString", SampleText.getText().toString()); 
} 
2

答案是很多的頭髮拉後簡單。

添加在onBackPressed()事件活性2的:

public void onBackPressed() { 
    finish(); 
}