Android 保存编辑文本和按钮单击的状态
我有两项活动。第一个Android 保存编辑文本和按钮单击的状态,android,button,android-edittext,android-button,Android,Button,Android Edittext,Android Button,我有两项活动。第一个活动具有编辑文本和下一步按钮。第二个活动有一个后退按钮。在第一个活动中我在编辑文本中输入了一些文本,然后点击了下一步按钮。现在我处于SecondActivity,如果我按下Back按钮,它将返回到First Activity清除EditText字段。我希望EditText字段保持不变。如何实现这些步骤 第一项活动: public class HomeActivity extends Activity { EditText text; Button button; @Over
活动
具有编辑文本
和下一步按钮
。第二个活动
有一个后退按钮
。在第一个活动中
我在编辑文本
中输入了一些文本,然后点击了下一步按钮
。现在我处于SecondActivity
,如果我按下Back按钮
,它将返回到First Activity
清除EditText
字段。我希望EditText
字段保持不变。如何实现这些步骤
第一项活动:
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);
}
}
第二项活动:
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);
}
});
}
}
在这种特定情况下,当您想要保留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 activity Stack将显示前一个活动及其所有数据
在更复杂的场景中,当您在活动之间进行复杂的导航并且仍然希望数据保留在字段中时,您需要使用、在需要时保存数据(最好是在导航到其他活动时)并在返回此活动时再次加载(在onResume()中)
希望这能有所帮助:)你必须使用SharedPreference来做这件事。。让我试试使用SharedPrefernceThanks!它使用SharedReferenceHanks工作!它起作用了。我必须这样做,对吗<代码>受保护的void onResume(){super.onResume();SharedReferences首选项=GetSharedReferences(“my_prefs”,0);SharedReferences.Editor编辑器=首选项.edit();Editor.putString(“etValue”,text.getText().toString());Editor.commit();}太好了,让我们有一个提示…通常最好在活动中创建两个方法,如saveActivityValues()和loadActivityValues(),并在需要时调用它们。当您在活动中有多个值要保存和加载时,它会变得很方便。在保存数据键名称的资源字符串上也使用一些静态常量,如本例中的“etValue”。所有这些都是为了使您的代码更加可读和易于管理……)