在我的应用程序中,有一个活动A,它是一个主要的活动,在A中也有几个片段。当你单击其中一个片段中的图像时,它将启动一个新的活动B.当你单击后退按钮,我将调用finish()完成活动并返回活动A.但是当返回活动A时,再次调用A的onCreate()。为什么每次调用onCreate()?我知道,应该只调用一次,然后调用onStart()。
从细分到活动B如下:
Intent i = new Intent(_scontext, ProductListing.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_scontext.startActivity(i);
getActivity().overridePendingTransition(R.anim.push_out_to_left,R.anim.push_out_to_right);
单击活动B中的后退按钮时,代码段如下:
Intent _gobck = new Intent(_ctx,ProductDisplay.class);
startActivity(_gobck);
finish();
overridePendingTransition(R.anim.push_out_to_left,
R.anim.push_out_to_right);
代码有什么问题?我错过了什么吗?
答案 0 :(得分:2)
您正在重新开始活动。 删除以下代码,它将起作用。
Intent _gobck = new Intent(_ctx,ProductDisplay.class);
startActivity(_gobck);
答案 1 :(得分:2)
既然你已经得到了@Rajitha Siriwardena的答案,但我只是想澄清一些要点,
据我所知,应该只调用一次,然后onStart()应该 被称为。
上述句子首先不是真的。
即使您完成了ActivityA
,您OnCreate
也有可能进入ActivityB
。如果您的ActivityB长时间保持在前台,当然您的ActivityA将在后台处于后台,因此最终您的onStop
中的活动(请记住不在onPause
中)和android {{3}如果您的应用想要访问您的活动,那么在onStop
之后,它会进入onCreate
所以finish()
ActivityB
会有效,但是当您这样做时,ActivityA
无法保证onCreate
被称为{{1}}。
答案 2 :(得分:1)
如果从backPress中删除finish(),则不会创建Activity,也不需要编写Intent,它将自行管理它的后备栈。