Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Java onCreate_Java_Android_Android Lifecycle_Oncreate - Fatal编程技术网

Android Java onCreate

Android Java onCreate,java,android,android-lifecycle,oncreate,Java,Android,Android Lifecycle,Oncreate,所以我遵循了谷歌的第一个Android应用程序示例。如果我点击发送按钮,它会打开DisplayMessageActivity。但是在点击DisplayMessageActivity的后退按钮(左箭头)后,MainActivity的onCreate(Bundle savedInstanceState)再次被调用。它似乎创建了MainActivity的新实例。我可以通过在MainActivity的onCreate中设置一个bool值来验证这一点,但它没有被保留 如何返回到MainActivity(调

所以我遵循了谷歌的第一个Android应用程序示例。如果我点击发送按钮,它会打开
DisplayMessageActivity
。但是在点击DisplayMessageActivity的后退按钮(左箭头)后,
MainActivity的
onCreate(Bundle savedInstanceState)
再次被调用。它似乎创建了
MainActivity
的新实例。我可以通过在
MainActivity
onCreate
中设置一个bool值来验证这一点,但它没有被保留

如何返回到
MainActivity
(调用者)的上一个实例?

您应该看看

如果您想再次访问活动的状态,我建议使用该方法

SaveInstanceState上的公共无效(束超出状态)

以保存当前状态

在此方法中检索以前保存的值:

RestoreInstanceState上的公共无效(Bundle savedInstanceState)`

您可以在返回箭头视图的onClickListener中调用finish(),例如。它将完成DisplayMessageActivity,您将返回调用者活动(本例中为MainActivity)

比如:

backArrow.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       finish();
   }
});
看起来它创建了MainActivity的新实例

是的,我想,这是很正常的行为

基本上,Android操作系统一次只保留一个活动,以便释放尽可能多的内存资源

您应该使用


您可以以某些方式保存活动的某些状态(
Parcelable
Bundle
SharedReferences
等)。

从未调用onSaveInstanceState。因此,如果onCreate.hmm中没有出现(savedInstanceState!=null),则在销毁活动时应调用方法
onSaveInstanceState
。正如您所说,如果从未调用方法
onSaveInstanceState
,则
onCreate
中的参数将为
null
。是否确实使用
@Override
注释正确写入了OnSaveInstanceState(在MainActivity中)?