我正在使用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);
}
}
答案 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.
}
}