简体   繁体   English

Android:如何在返回Activity时在EditText中保存值

[英]Android:How to save values in EditText when returning to an Activity

I am trying to save values entered to a form so that when a user returns to the activity the content entered remains populated. 我正在尝试保存输入到表单的值,以便当用户返回活动时,输入的内容仍然填充。 As it functions now. 因为它现在运作。 The user can enter details and click the "send button". 用户可以输入详细信息并单击“发送按钮”。 The the next activity will then show details of what the user entered. 然后,下一个活动将显示用户输入的详细信息。 If the user selects the "back button", the user returns the previous activity but the content is wiped from the fields in the form. 如果用户选择“后退按钮”,则用户返回先前的活动,但是从表单中的字段中擦除内容。 Any suggestions would be appreciated. 任何建议,将不胜感激。

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("");  
    }

}

Second Activity...... 第二次活动......

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);
    }


}

emailBack starts a whole new activity. emailBack开始一项全新的活动。 just call finish instead 只是打电话给finish

Use Shared preferences... To create a String value use - 使用共享首选项...要创建字符串值,请使用 -

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

And if you want to change it or rewrite - 如果你想改变它或重写 -

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

To call the meaning of saved value - 要称保存价值的含义 -

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

Replace the method like this, 替换这样的方法,

public void emailBack (View backButton){

    onBackPressed();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM