繁体   English   中英

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

[英]Maintain Activity State with two Activities

我们有一个Android App和一个包含两个活动的MainActivity和PageTwo。 在MainActivity中,我们将EditText小部件设置为仅接受数字输入,还具有一个通过Intent转到下一个活动的Button。 在第二个活动PageTwo上,我们有一个Button,可以通过一个Intent将用户返回到MainActivity。 当我们在EditText字段中输入一个值并进行从MainActivity到PageTwo活动并返回的旅程时,除非您使用设备(仿真器)后退按钮,否则似乎清除了该值。 我正在尝试维护此EditText变量的活动状态

代码段

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

如果您想返回上一个活动,为什么要调用意图? 只需简单地写onBackPressed(); 内部onClick

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

或者,如果您真的想使用意图,则可以始终使用finish()

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

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

PageTwo第二个活动不会故意返回MainActivity 只需在按钮单击中执行以下操作:

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

据我对您提出的问题的理解,您可以在第二页中执行以下操作:

@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