2012-10-10 19 views
0

我試圖將用戶條目保存到表單中,但出於某種原因我無法使其工作。當我殺死應用程序並重新啓動時,數據不會出現。Android:onSaveInstanceState。如何將條目保存到EditVew中?

我的目標是,如果用戶在完成表單並且應用程序被殺害的一半時間內,應用程序重新啓動條目時仍會保留。任何指導將不勝感激。

public class MainActivity extends Activity { 
    public final static String EXTRA_FROM = "com.example.assignment1.FROM"; 
    public final static String EXTRA_TO = "com.example.assignment1.TO"; 
    public final static String EXTRA_CC = "com.example.assignment1.CC"; 
    public final static String EXTRA_BCC = "com.example.assignment1.BCC"; 
    public final static String EXTRA_SUBJECT = "com.example.assignment1.SUBJECT"; 
    public final static String EXTRA_COMPOSE = "com.example.assignment1.COMPOSE"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) 
    { 
     super.onSaveInstanceState(outState); 
     EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom); 
     EditText emailTo =(EditText) findViewById(R.id.editEmailTo); 
     EditText emailCc =(EditText) findViewById(R.id.editEmailCc); 
     EditText emailBcc =(EditText) findViewById(R.id.editEmailBcc); 
     EditText emailSubject =(EditText) findViewById(R.id.editEmailSubject); 
     EditText emailCompose =(EditText) findViewById(R.id.editEmailCompose); 

     String from = emailFrom.getText().toString(); 
     String to = emailTo.getText().toString(); 
     String cc = emailCc.getText().toString(); 
     String bcc = emailBcc.getText().toString(); 
     String subject = emailSubject.getText().toString(); 
     String compose = emailCompose.getText().toString(); 

     outState.putString(EXTRA_FROM, from); 
     outState.putString(EXTRA_TO, to); 
     outState.putString(EXTRA_CC, cc); 
     outState.putString(EXTRA_BCC, bcc); 
     outState.putString(EXTRA_SUBJECT, subject); 
     outState.putString(EXTRA_COMPOSE, compose); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedState) 
    { 

     EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom); 
     EditText emailTo =(EditText) findViewById(R.id.editEmailTo); 
     EditText emailCc =(EditText) findViewById(R.id.editEmailCc); 
     EditText emailBcc =(EditText) findViewById(R.id.editEmailBcc); 
     EditText emailSubject =(EditText) findViewById(R.id.editEmailSubject); 
     EditText emailCompose =(EditText) findViewById(R.id.editEmailCompose); 

     String from = savedState.getString(EXTRA_FROM); 
     String to = savedState.getString(EXTRA_TO); 
     String cc = savedState.getString(EXTRA_CC); 
     String bcc = savedState.getString(EXTRA_BCC); 
     String subject = savedState.getString(EXTRA_SUBJECT); 
     String compose = savedState.getString(EXTRA_COMPOSE); 

     emailFrom.setText(from); 
     emailTo.setText(to); 
     emailCc.setText(cc); 
     emailBcc.setText(bcc); 
     emailSubject.setText(subject); 
     emailCompose.setText(compose); 
    } 

    public void emailSend (View sendButton) 
    { 
     Intent intent = new Intent(this,DisplayEmailActivity.class); 
     EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom); 
     EditText emailTo =(EditText) findViewById(R.id.editEmailTo); 
     EditText emailCc =(EditText) findViewById(R.id.editEmailCc); 
     EditText emailBcc =(EditText) findViewById(R.id.editEmailBcc); 
     EditText emailSubject =(EditText) findViewById(R.id.editEmailSubject); 
     EditText emailCompose =(EditText) findViewById(R.id.editEmailCompose); 

     String from = emailFrom.getText().toString(); 
     String to = emailTo.getText().toString(); 
     String cc = emailCc.getText().toString(); 
     String bcc = emailBcc.getText().toString(); 
     String subject = emailSubject.getText().toString(); 
     String compose = emailCompose.getText().toString(); 

     intent.putExtra(EXTRA_FROM,from); 
     intent.putExtra(EXTRA_TO,to); 
     intent.putExtra(EXTRA_CC,cc); 
     intent.putExtra(EXTRA_BCC,bcc); 
     intent.putExtra(EXTRA_SUBJECT,subject); 
     intent.putExtra(EXTRA_COMPOSE,compose); 

     startActivity(intent); 
    } 
} 
+0

你想達到什麼目的?從應用程序重新啓動(由於方向更改)還是從用戶退出的應用程序中恢復條目? – Luis

+0

從用戶退出的應用程序中恢復條目。 – Calgar99

回答

0

要保存一些項目,最好的辦法是使用SharedPreferences。

我前段時間在這篇文章中舉了一個例子:SharedPreferences

祝你好運。

0

當我殺的應用程序並重新啓動數據不會出現。

當然。如果您終止應用程序(例如,任務殺手),您保存的實例狀態將消失。要處理這種情況,您需要將數據保存到文件,數據庫等。

要測試onSaveInstanceState()是否有效,請旋轉屏幕或執行其他類型的配置更改。