简体   繁体   English

通过两项活动维护活动状态

[英]Maintain Activity State with two Activities

We have and Android App that contains two Activities MainActivity and PageTwo. 我们有一个Android App和一个包含两个活动的MainActivity和PageTwo。 In the MainActivity we have an EditText widget set to accept number input only and a Button that goes to the next activity with the aid of an Intent. 在MainActivity中,我们将EditText小部件设置为仅接受数字输入,还具有一个通过Intent转到下一个活动的Button。 On the second activity PageTwo we have a Button that returns the user to the MainActivity with an Intent. 在第二个活动PageTwo上,我们有一个Button,可以通过一个Intent将用户返回到MainActivity。 When we enter a value in the EditText field and make the trip from the MainActivity to PageTwo activity and back the value is seemingly erased unless you use the device (emulator) back button. 当我们在EditText字段中输入一个值并进行从MainActivity到PageTwo活动并返回的旅程时,除非您使用设备(仿真器)后退按钮,否则似乎清除了该值。 I am trying to maintain the Activity State of this one EditText variable 我正在尝试维护此EditText变量的活动状态

code snippets 代码段

 EditText ETage;
 int vAGE;
 static final String V_AGE = "vAGE"; //KeyValue Pair

@Override
public void onSaveInstanceState(Bundle outState){
    outState.putInt(V_AGE,vAGE);
    super.onSaveInstanceState(outState);
}

//@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
    super.onRestoreInstanceState(savedInstanceState);
    vAGE = savedInstanceState.getInt(V_AGE);
    ETage.setText(String.valueOf(vAGE));
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //if(savedInstanceState != null){
        //vAGE = savedInstanceState.getChar(V_AGE);
    //}
    setContentView(R.layout.activity_main);

  ETage = (EditText)findViewById(R.id.editTextAge); 

if you want to go back to previous Activity why you are calling intent? 如果您想返回上一个活动,为什么要调用意图? just simply write onBackPressed(); 只需简单地写onBackPressed(); inside onClick 内部onClick

Example

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});

or if you really wanted to use intent you can always use finish() . 或者,如果您真的想使用意图,则可以始终使用finish()

Example

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        Intent i = new Intent(PageTwo.this, MainActivity.class);            
        startActivity(i);
        finish();
    }
});

In PageTwo second activity don't return to MainActivity with an intent. PageTwo第二个活动不会故意返回MainActivity Simply, do following in button click: 只需在按钮单击中执行以下操作:

super.onBackPressed(); // this instead of intent to start MainActivity

From what I understand from your question you can do like this in second page: 据我对您提出的问题的理解,您可以在第二页中执行以下操作:

@Override
public void onBackPressed() {
    super.onBackPressed();

Intent intent = new   Intent(SecondActivity.this,MainActivity.class);
        startActivity(intent);

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM