Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:返回活动时如何在EditText中保存值_Java_Android_Savestate - Fatal编程技术网

Java Android:返回活动时如何在EditText中保存值

Java Android:返回活动时如何在EditText中保存值,java,android,savestate,Java,Android,Savestate,我试图将输入的值保存到表单中,这样当用户返回到活动时,输入的内容仍会被填充。就像它现在的功能一样。用户可以输入详细信息并单击“发送按钮”。接下来的活动将显示用户输入内容的详细信息。如果用户选择“后退按钮”,则用户返回上一个活动,但内容将从表单中的字段中删除。如有任何建议,将不胜感激 import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Me

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

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


}

emailBack
启动一个全新的活动。只需调用
finish
即可

使用共享首选项。。。要创建字符串值,请使用-

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", " ");

换成这样的方法,

public void emailBack (View backButton){

    onBackPressed();
}

将其价值存储在SharedReferencei中,很高兴它帮助了您。但是,通过开始接受迄今为止对您有所帮助的答案,帮助我们提高您的信用。您必须单击每个答案左侧总票数计数器下方的勾号。您不应在Backpressed()上调用
,当您按back时,系统会执行此操作。您想调用
finnish()
,这是
onBackPressed()
的默认实现所做的。是否有任何规则表明我不应该调用onBackPressed()?如果它将被系统使用,那么为什么它是公开的呢?我希望用户清楚地理解返回到前一个活动而不丢失数据意味着什么。我没有发现我的实现有任何问题。是否可以在发送条目之前将其保存到表单中。因此,如果应用程序被终止,用户所做的任何输入都会保存到应用程序结束时?@Andro您不应该调用回调。它们是公共的,因为系统应该能够在包中调用它们。你想做的是完成活动,对吗?如果调用回调来结束活动,则依赖于它的实现,而这不是一件好事。您甚至可以选择在应用程序中以不同方式处理back键,然后断开emailBack。至于保存,SharedReferences是一个不错的选择。不必要地使用首选项