1

我有 2 个活动。首先ActivityEditTextNext Button。第二个Activity有一个Back Button。首先Activity,我输入了一些文本,EditText然后点击Next Button. 现在我在SecondActivity,如果我按下Back Button它将返回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);
        }
    });

}

  }
4

1 回答 1

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

希望这可以帮助..:)

于 2013-04-08T06:57:50.630 回答