保存EditText和按钮单击的状态

时间:2013-04-08 06:46:56

标签: android button android-edittext android-button

我有2项活动。首先ActivityEditTextNext Button。第二个Activity有一个Back Button。在第一个Activity我在EditText中输入了一些文字,然后点击Next Button。现在我在SecondActivity,如果我按Back Button,它将返回First Activity清除EditText字段。我希望EditText字段保持不变。如何实现这些步骤?enter image description here

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

}

  }

1 个答案:

答案 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()中)当你回到这个活动时。

希望这会有所帮助.. :)

相关问题