2013-05-08 89 views
0

我试图在android.Basic场景中保存活动的状态是有2个活动A和B.Activity A包含2个edittext字段。用户输入一些值并通过intent移动到活动B.当用户来回到活动A(意图我提供了一个后退按钮)我需要在用户输入的2个edittext字段中显示这些值(即保持活动A的状态)。此外,我不想使用共享首选项或使这些字段为静态。 我用下面的代码,但它并不能帮助:如何维护活动的状态?

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.manual_entry); 
      edittext1=(Edittext)findViewById(R.id.edittext1); 
    } 

@Override 
    protected void onSaveInstanceState(Bundle savedInstanceState) 
    { 
      super.onSaveInstanceState(savedInstanceState); 
      savedInstanceState.putString("cardvalue_saved_inst", value_card_manuallyentered); 
    } 




@Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) 
    { 
     super.onRestoreInstanceState(savedInstanceState); 
     value_savedinstance = savedInstanceState.getString("cardvalue_saved_inst"); 
     Log.e("value_savedinstance",""+value_savedinstance); 
     edittext1.setText(value_savedinstance); 
    } 
+0

使用共享首选项来存储和gt值 – Raghunandan 2013-05-08 13:04:58

+0

所以你在日志中看到value_savedinstance? – 2013-05-08 13:06:03

+0

Raghunandan,我可以在不使用sharedpreferences的情况下实现它,我认为它应该可以使用savedinstanceState,但上面的方法对我无效。 – Joyson 2013-05-08 13:06:57

回答

0

ActivityA,如果您启动ActivityB,不叫finish()自己,当ActivityB结束(当用户按下BACK按钮或其他方式),ActivityA将以与它相同的状态显示。这只是标准的Android行为,您不需要做任何特别的事情。

onRestoreInstanceState()如果暂停的活动得到恢复是不叫(这是ActivityA推出ActivityBActivityB然后完成通常情况下)。

onRestoreInstanceState()如果Android会杀死您的活动(例如在方向更改过程中)或者杀死您的进程,则只能调用。在这种情况下,当用户返回到您的活动时,Android会创建一个新的活动实例,然后致电onRestoreInstanceState()

0

我不得不简单地在Activity B中调用finish()并且它工作正常。