2013-08-05 65 views
-2

在用戶登錄並勾選「保留我登錄」複選框後,活動將繼續執行另一個具有多個EditText的活動。但是,如果用戶意外關閉/關閉設備,則在用戶打勾「保持我登錄狀態」後,將返回該應用程序時檢索數據。我使用onSaveInstanceState和onRestoreInstanceState,但它沒有幫助。請幫我解決一下這個。在Android中銷燬活動後數據將保留

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    final EditText txt_Fname = (EditText) findViewById(R.id.txt_Fname); 
    final EditText txt_Mname = (EditText) findViewById(R.id.txt_Mname); 
    final EditText txt_Lname = (EditText) findViewById(R.id.txt_Lname); 
    final EditText txt_Suffix = (EditText) findViewById(R.id.txt_Suffix); 

    String Fname = txt_Fname.getText().toString(); 
    String Mname = txt_Mname.getText().toString(); 
    String Lname = txt_Lname.getText().toString(); 
    String Suffix = txt_Suffix.getText().toString(); 

    outState.putString("shared_fname", Fname); 
    outState.putString("shared_mname", Mname); 
    outState.putString("shared_lname", Lname); 
    outState.putString("shared_suffix", Suffix); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    final EditText txt_Fname = (EditText) findViewById(R.id.txt_Fname); 
    final EditText txt_Mname = (EditText) findViewById(R.id.txt_Mname); 
    final EditText txt_Lname = (EditText) findViewById(R.id.txt_Lname); 
    final EditText txt_Suffix = (EditText) findViewById(R.id.txt_Suffix); 

    txt_Fname.setText(savedInstanceState.getString("shared_fname")); 
    txt_Mname.setText(savedInstanceState.getString("shared_mname")); 
    txt_Lname.setText(savedInstanceState.getString("shared_lname")); 
    txt_Suffix.setText(savedInstanceState.getString("shared_suffix")); 
} 

回答

-1

使用SharedPreference來保存數據,當你和活動之間的切換關閉應用程序。下面是示例方法,您可以在onCreate()和onDestroy()期間調用。

void saveText() { 
    sPref = getPreferences(MODE_PRIVATE); 
    Editor ed = sPref.edit(); 
    ed.putString(SAVED_TEXT, etText.getText().toString()); 
    ed.commit(); 
    Toast.makeText(this, "Text saved", Toast.LENGTH_SHORT).show(); 
    } 

    void loadText() { 
    sPref = getPreferences(MODE_PRIVATE); 
    String savedText = sPref.getString(SAVED_TEXT, ""); 
    etText.setText(savedText); 
    Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show(); 
    } 
+0

我應該在哪裏調用該方法?當然OnPause和OnResume中的 – androidBoomer

+0

。 –

+0

這是非常有趣的,誰低估了我的答案,爲什麼? –