返回上一屏幕而不创建新实例

时间:2012-07-30 05:30:06

标签: android

enter image description here

如图所示,流程就是这样的。因此,每当用户点击徽标按钮时,应调用活动A.作为简单的解决方案,我们可以使用这种方法...

Intent intent = new Intent(activity, activityToStart);
startActivity(intent);

但是此活动会为我的应用创建一个新活动。但是我需要在流程图中向前推进调用相同的活动实例。从活动A到B然后再次在B上可以通过调用finish()轻松调用,但是从活动C或D调用,如何回到A.

我的想法已经用完,但没有取得任何丰硕的成果。如果您有任何建议或在任何地方我出错,请帮助我。提前谢谢。

5 个答案:

答案 0 :(得分:15)

从D回到A,使用Intent Flags。

Intent intent = new Intent(activity, activityToStart);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent);

FLAG_ACTIVITY_CLEAR_TOP将代替创建新活动,它将调用堆栈上的活动,并将弹出所调用活动的所有活动。

答案 1 :(得分:0)

通过将活动A设为“SingleTask”,您可以实现此目的。当一个Activity在SingleTask中单击Home按钮时,其他活动将从堆栈中删除。

有关Android Activites的更多信息,请参阅这些链接...

Link 1 - Android Fundamentals

Link 2 - Another Similar Question

答案 2 :(得分:0)

使用ViewFlipper在同一活动中的不同窗口之间往返。

ViewFlipper vf = (ViewFlipper) findViewById( R.id.view_flipper);

转到下一个窗口

vf.showNext();

转到上一个窗口

vf.showPrevious();

答案 3 :(得分:0)

而不是使用

Intent intent = new Intent(activity, activityToStart);
startActivity(intent);

使用

Intent intent = new Intent(activity, activityToStart);
startActivityforResult(intent,1234);

这将确保活动A未被杀死,当您完成活动C时,活动A将恢复。

注意: - 每当您创建新活动而未完成(退出)主机活动时,主机活动将以LIFO顺序保存在堆栈上

LIFO : - Last In First Out

答案 4 :(得分:0)

我不确定,这是对的,但你可以尝试一下!

当您从Activity-B开始打开新活动时,您可以完成()当前活动。

打开Activity-C =>完成Activity-B并启动Activity-C

打开Activity-D =>完成Activity-C并启动Activity-D

现在当您按下时,活动A将会打开。