Avtivity01 => Avtivity02 => Avtivity03
在点击一个按钮后,您可以从Avtivity01
转到Avtivity02
。在点击一个按钮后,您可以从
Avtivity02
转到Avtivity03
。-
我想在点击一个按钮后直接从
Activity03
转到Activity01
。-
注意:
我不想使用
Intent
,因为我希望Activity01
就像我从Activity02
按返回按钮一样。请问如何实现?
Avtivity01 => Avtivity02 => Avtivity03
在点击一个按钮后,您可以从Avtivity01
转到Avtivity02
。Avtivity02
转到Avtivity03
。Activity03
转到Activity01
。Intent
,因为我希望Activity01
就像我从Activity02
按返回按钮一样。为什么不能使用 Intent
?当您单击按钮时,可以使用 FLAG_ACTIVITY_CLEAR_TOP。 编辑:如果要保留 Activity
的原始实例,可以将此标志与 FLAG_ACTIVITY_SINGLE_TOP 结合使用。
您是否希望能够从 Activity03 按钮返回到 Activity02?如果您总是希望返回到 Activity01,则可以在清单中的 Activity02 上使用 android:noHistory="true"
,然后在 Activity03 上调用 finish()
。
android:launchMode="singleTop"
。 - SadeQ digitALLife您可以使用意图(intent)并使用标志(flags)来防止返回同一屏幕,从而返回到您需要的一个或多个屏幕之前。
Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class);
gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(gotoScreenVar);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
简短回答如下:
我有MainActivity
、SecondActivity
和ThirdActivity
三个活动,我想做的是从MainActivity
打开SecondActivity
,然后从SecondActivity
打开ThirdActivity
,并且我想在ThirdActivity
中单击一个按钮,关闭SecondActivity
和ThirdActivity
,而不会调用新的MainActivity
,我希望它能够像返回到它一样运行,而不是创建一个新的活动。而且最重要的是,在ThirdActivity
中要保持返回按钮的正常功能,以便我可以在需要更改SecondActivity
中的某些选择时返回SecondActivity
。因此,在启动ThirdActivity
后,我不能在SecondActivity
中调用finish();
或使用android:noHistory="true"
等其他解决方案,因为这些解决方案会杀死SecondActivity
,我无法通过返回按钮返回它。
所以,这个标志对我解决了问题:FLAG_ACTIVITY_REORDER_TO_FRONT
FLAG_ACTIVITY_REORDER_TO_FRONT
如果在传递给Context.startActivity()的Intent中设置了该标志,如果已经在运行,则将启动的活动带到其任务历史记录堆栈的前面。
请参考此处
所以,当我在ThirdActivity
中单击按钮时,我尝试使用以下代码返回到MainActivity
。希望这可以帮助您。
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
您可以覆盖Activity3上的返回按钮单击
@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);
}
只需一行代码即可实现。
在调用第三个活动后,调用finish()
函数即可。
例如:
在您的Activity02中
Intent thirdActivity = new Intent(this,Activity03.class);
startActivity(thirdActivity);
finish();