我有这个活动序列:
Avtivity01 => Avtivity02 => Avtivity03
点击按钮后,您可以从Avtivity01
转到Avtivity02
。
点击按钮后,您可以从Avtivity02
转到Avtivity03
。
-
点击按钮后,我想从Activity03
转到Activity01
DIRECTLY 。
-
注意:
我不想使用Intent
,因为我希望Activity01
,就像我按下Activity02
后面的按钮
请问怎么做?
答案 0 :(得分:40)
为什么不能使用Intent
?单击按钮时可以使用FLAG_ACTIVITY_CLEAR_TOP。 修改:如果您要保留Activity
的原始实例,可以将此标记与FLAG_ACTIVITY_SINGLE_TOP结合使用。
您是否曾希望能够按下Activity03中的按钮返回Activity02?如果您总是希望它返回到Activity01,您可以在清单中的Activity02上使用android:noHistory="true"
,只需在Activity03上调用finish()
。
答案 1 :(得分:4)
您可以使用意图返回多个屏幕,并使用标记来阻止返回到同一屏幕:
Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class);
gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(gotoScreenVar);
答案 2 :(得分:1)
link有好文章。这会对你有所帮助。顺便说一句,您可以使用FLAG_ACTIVITY_REORDER_TO_FRONT来解决您的问题。
答案 3 :(得分:1)
我遇到了同样的问题,
简短的答案是将此行添加到意图中。
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
长答案是:
我有MainActivity
,SecondActivity
和ThirdActivity
,我想做的是从SecondActivity
打开MainActivity
,然后从{{ 1}},并且我想单击ThirdActivity
和SecondActivity
中的两个按钮来关闭ThirdActivity
和SecondActivity
而不调用新的ThirdActivity
,我希望它能像我回到它不会创建新的按钮。最需要的是,如果我需要更改MainActivity
中的某些选项,则使ThirdActivity
中的按钮功能正常,恢复到SecondActivity
。因此,在启动SecondActivity
或finish();
清单中的SecondActivity
之类的任何其他解决方案之后,我无法在{{1}中调用ThirdActivity
,因为这些解决方案会杀死{{ 1}},我无法返回它的“后退”按钮。
所以这个标志为我android:noHistory="true"
FLAG_ACTIVITY_REORDER_TO_FRONT
如果在传递给Context.startActivity()的Intent中进行了设置,则此标志将使已启动的活动(如果已在运行)置于其任务的历史记录堆栈的最前面。
转到参考here
因此,当我单击SecondActivity
中的按钮时,我尝试使用此代码从SecondActivity
返回我的FLAG_ACTIVITY_REORDER_TO_FRONT
。希望对您有帮助。
MainActivity
答案 4 :(得分:-2)
您可以覆盖活动3
上的后退按钮@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
startActivity(Activity3.this,Activity1.class);
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 5 :(得分:-3)
只需一行即可使用
在致电您的第三个活动后,请致电finish()
到下一行。它会起作用。
例如。
在您的Activity02中
Intent thirdActivity = new Intent(this,Activity03.class);
startActivity(thirdActivity);
finish();