0

我们有一个包含两个活动 MainActivity 和 PageTwo 的 Android 应用程序。在 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); 
4

3 回答 3

1

如果你想回到以前的活动为什么你要调用意图?只是简单地写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();
    }
});
于 2016-08-11T04:17:54.023 回答
0

根据我从您的问题中了解到的情况,您可以在第二页中这样做:

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

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

}
于 2016-08-11T04:17:12.267 回答
0

PageTwo第二个活动中不要MainActivity带着意图返回。只需单击按钮执行以下操作:

super.onBackPressed(); // this instead of intent to start MainActivity
于 2016-08-11T04:04:43.647 回答