我有2项活动。首先Activity
有EditText
和Next Button
。第二个Activity
有一个Back Button
。在第一个Activity
我在EditText
中输入了一些文字,然后点击Next Button
。现在我在SecondActivity
,如果我按Back Button
,它将返回First Activity
清除EditText
字段。我希望EditText
字段保持不变。如何实现这些步骤?
FirstActivity:
public class HomeActivity extends Activity {
EditText text;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
text = (EditText) findViewById(R.id.editText1);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(HomeActivity.this,Second.class);
startActivity(i);
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
CharSequence sequence = text.getText();
outState.putCharSequence("savedText", sequence);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
CharSequence sequence = savedInstanceState.getCharSequence("savedText");
text.setText(sequence);
}
}
SecondActivity:
public class Second extends Activity {
Button b;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
b = (Button) findViewById(R.id.button_back);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Second.this, HomeActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
});
}
}
答案 0 :(得分:2)
在这种特定情况下,当您想要保留MainActivity的值时,您只需要完成SecondActivity而不是为HomeActivity创建新的意图,如
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Intent i = new Intent(Second.this, HomeActivity.class);
//i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//startActivity(i);
//JUST FINISH THIS (SecondActivity) ACTIVITY
finish();
}
这将关闭第二项活动,Android Acticity Stack将显示之前的活动及其所有数据。
在更复杂的场景中,当您在活动之间进行复杂导航并仍希望数据保留在字段中时,您需要使用SharedPreferances,在需要时保存数据(理想情况下导航到其他活动时)并加载再次(在onResume()中)当你回到这个活动时。
希望这会有所帮助.. :)