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

时间:2016-08-11 04:01:01

标签: android android-intent activity-state

我们和Android App一起包含两个活动MainActivity和PageTwo。在MainActivity中,我们将EditText小部件设置为仅接受数字输入,并使用Button在Intent的帮助下转到下一个活动。在第二个活动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); 

3 个答案:

答案 0 :(得分:1)

如果你想回到之前的Activity,你为什么要调用intent?只需在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();
    }
});

答案 1 :(得分:0)

PageTwo秒活动中,不要故意返回MainActivity。只需按下按钮即可执行以下操作:

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

答案 2 :(得分:0)

根据我的理解你可以在第二页中这样做:

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

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

}