2012-10-10 38 views
1

我試圖保存輸入到表單的值,以便當用戶返回活動時輸入的內容仍然填充。現在起作用。用戶可以輸入詳細信息並單擊「發送按鈕」。接下來的活動將顯示用戶輸入內容的詳細信息。如果用戶選擇「後退按鈕」,則用戶返回先前的活動,但是內容從表格中的字段中被擦除。任何建議,將不勝感激。Android:如何在返回活動時在EditText中保存值

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 

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_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); 
     String from = emailFrom.getText().toString(); 
     outState.putString(EXTRA_FROM, from); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedState) 
    { 
     EditText emailFrom =(EditText) findViewById(R.id.editEmailFrom); 
     String from = savedState.getString(EXTRA_FROM); 
     emailFrom.setText(from); 
    } 
    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 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 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_SUBJECT,subject); 
     intent.putExtra(EXTRA_COMPOSE,compose); 

     startActivity(intent); 
    } 



    public void emailClear (View clearButton) { 
     ((EditText) findViewById(R.id.editEmailFrom)).setText(""); 
     ((EditText) findViewById(R.id.editEmailTo)).setText(""); 
     ((EditText) findViewById(R.id.editEmailCc)).setText(""); 
     ((EditText) findViewById(R.id.editEmailBcc)).setText(""); 
     ((EditText) findViewById(R.id.editEmailSubject)).setText(""); 
     ((EditText) findViewById(R.id.editEmailCompose)).setText(""); 
    } 

} 

次活動......

public class DisplayEmailActivity extends Activity { 

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

     Intent intent = getIntent(); 

     String from = intent.getStringExtra(MainActivity.EXTRA_FROM); 
     String to = intent.getStringExtra(MainActivity.EXTRA_TO); 
     String cc = intent.getStringExtra(MainActivity.EXTRA_CC); 
     String subject = intent.getStringExtra(MainActivity.EXTRA_SUBJECT); 
     String compose = intent.getStringExtra(MainActivity.EXTRA_COMPOSE); 


     TextView textFrom =(TextView)findViewById(R.id.displayEmailFrom); 
     TextView textTo =(TextView)findViewById(R.id.displayEmailTo); 
     TextView textCc =(TextView)findViewById(R.id.displayEmailCc); 
     TextView textSubject =(TextView)findViewById(R.id.displayEmailSubject); 
     TextView textCompose =(TextView)findViewById(R.id.displayEmailCompose); 

     textFrom.setText(from); 
     textTo.setText(to); 
     textCc.setText(cc); 
     textSubject.setText(subject); 
     textCompose.setText(compose); 

    } 

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

    public void emailBack (View backButton){ 
     Intent intent = new Intent(this,MainActivity.class); 

     startActivity (intent); 
    } 


} 
+1

將其價值存儲在SharedPreference中 – Lucifer

回答

0

替換這樣的方法,

public void emailBack (View backButton){ 

    onBackPressed(); 
} 
+0

謝謝,完美的工作。 – Calgar99

+0

我很高興它有幫助。但通過開始接受迄今爲止幫助你的答案,幫助我們獲得信譽。您必須點擊每個答案左側總票數下方的勾號。 –

+0

您不應該調用'onBackPressed()',系統會在您按回時執行此操作。你想調用''finnish()'這是'onBackPressed()'的默認實現。 –

3

emailBack開始了一個全新的活動。只需撥打finish代替

0

使用共享偏好...創建一個字符串值,使用 -

String string12 = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getString("butname12", " "); 

如果你想改變它或重寫 -

getSharedPreferences("PREFERENCE", MODE_PRIVATE) 
        .edit() 
        .putString("butname12", "0") 
        .commit(); 

要調用的意義保存值 -

String ss = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getString("butname12", " "); 
+0

不必要的使用首選項 –

相關問題