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

标签 java android savestate

我正在尝试将输入的值保存到表单中,以便当用户返回 Activity 时,输入的内容仍会填充。正如它现在的功能。用户可以输入详细信息并单击“发送按钮”。下一个 Activity 将显示用户输入内容的详细信息。如果用户选择“后退按钮”,则用户会返回上一个 Activity ,但内容会从表单的字段中删除。如有任何建议,我们将不胜感激。

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

}

第二个 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 开始一个全新的 Activity 。只需调用 finish 即可

关于java - Android:返回 Activity 时如何在EditText中保存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12818912/

相关文章:

java - 在两个类之间发送时丢失数据

flash - 如何保存 .swf 文件的状态?

android - 我想保存选项卡的状态

javascript - 如何保存WebView应用程序的登录信息?

java - 使用 JNDI 的 LDAP 身份验证

java - 找到2个节点之间的最短路径没有更多想法

java - map 和 Jxls - 使用 XLSTransformer 分别处理不同的 Excel 工作表

java - 实时java android流

android - AVD的收件箱如何添加消息

java - 在 Grails 应用程序中添加/修改域类后重新启动 terracotta