移动到另一个活动后保持活动的输入

时间:2017-03-22 21:19:52

标签: android

我正在使用Android Studio。我有两个活动,MainActivity和Main2Activity。每个都有一个编辑文本和一个按钮。当我进入第二个活动时,如何将编辑文本中的输入保留在任何活动中?我尝试了很多答案,但没有任何效果。

以下是活动的代码。

public class MainActivity extends AppCompatActivity {

    EditText editText2;
    Button button;
    String var1 ;

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("var1", var1);
        editText2 = (EditText)findViewById(R.id.editText2);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        var1 = savedInstanceState.getString("var1");
        var1 = editText2.getText().toString();
        editText2.setText(var1);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void Click1(View view)
    {
           Intent i = new Intent(MainActivity.this,Main2Activity.class);
           startActivity(i);
    }
}

2 个答案:

答案 0 :(得分:0)

要将值从一个活动转移到另一个活动,您需要在startActivity(i);之前添加一行代码。您需要添加的这行代码是:

i.putExtra("inputValue", String.valueOf(editText2.getText()));

然后在另一个活动中,在onCreate()方法中添加:

Intent intent = getIntent();
String inputValue = intent.getStringExtra("inputValue");
editText.setText(inputValue);

显然我不知道MainActivity2中EditText的名称,所以用其名称替换editText。

希望这有帮助!

答案 1 :(得分:0)

您需要检查onCreate函数中是否存在savedInstanceState。

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

    // Check for a savedInstanceState
    if(savedInstanceState != null){
        var1 = savedInstanceState.getString("var1");
        editText2.setText(var1); // Making sure that you have assigned editText2 already, of course.
    }
}