我有很多活动。
A是列表活动。
B是表格活动。并动态生成。我连续两次打开此活动。
C是结果活动。
A-> B-> B就像简单地推送新活动。 如果结果成功,则我想在按C时清除所有表格。
A-> B-> B-> C ==> A-> C。
如果Im在C活动中结果失败,则可以返回如上的不同活动。
A-> B或A-> B-> B
当我按下C键时,我会使用cleartop,但它会清除所有活动,如何保存A活动的状态。
我如何管理片段等活动。
*当我从第二个B回来时,第一个B应该打开*
答案 0 :(得分:4)
您可以通过以下步骤实现它:
android:launchMode="singleTask"
文件中设置ActivityA
中的AndroidManifest.xml
。 在onNewIntent
中设置ActivityA
方法,如下所示:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle mBundle = intent.getExtras();
if(mBundle!=null){
String launchActivity = mBundle.getString("activityName");
switch (launchActivity){
case "ActivityD": // This is Activity Name Here it is ActivityD.class
startActivity(new Intent(ActivityA.this, ActivityD.class));
break;
}
}
}
现在从ActivityA
开始ActivityC
,如下所示。
startActivity(new Intent(ActivityC.this, ActivityA.class).putExtra("activityName", ActivityD.class.getSimpleName()));
它将调用onNewIntent
的{{1}}方法,并将匹配参数并从ActivityA
启动ActivityD
。因此,您的ActivityA
将保留在堆栈中,而ActivityA
将被添加在堆栈顶部。
ActivityD
时在ActivityD
中调用finish()方法来自ActivityB
。关于ActivityLaunchMode,请参阅this link
希望它会为您服务!
答案 1 :(得分:2)
在活动A上,您无法使用此功能进入活动B
startActivity(new Intent(Activity_A.this, Activity_B.classs));
从B到C
startActivity(new Intent(Activity_B.this, Activity_C.classs));
finish();
从C到D
startActivity(new Intent(Activity_C.this, Activity_D.classs));
finish();
从D到A
finish();
它将关闭Activity_D
和 Resume() Activity_A
答案 2 :(得分:2)
当您从Activity B到Activity C或从C到D启动Activity时,您需要调用finish();期望参加活动A。 喜欢 A-> D。
Start Activity(new Intent(A.this,D.class));
现在,当您单击活动A-> B然后是B-> C然后是C->时,您应该喜欢
A-> B。
Start Activity(new Intent(A.this,B.class));
B-> C
Intent intent =new Intent(B.this,C.class);
startActivity(intent);
finish();
C-> D
Intent intent =new Intent(C.this,D.class);
startActivity(intent);
finish();
现在,当您按返回时,您将返回到活动A。您应该删除所有clearActivityTop();。来自代码。
答案 3 :(得分:1)
您可以通过更频繁地使用片段来实现
活动::将活动放置到活动的后台时,用户可以通过导航到上一个活动 按返回按钮。
活动可以独立存在。
片段::将片段放置到活动中时,我们必须通过在执行过程中调用addToBackstack()来请求保存实例 碎片交易。
片段必须存在于活动中 source
通过使用片段,您可以使用标签轻松删除所需的任何页面,但是,如果您仍想使用活动
如果您使用startActivityForResult()而不是startActivity(),则 根据活动的返回值,您可以 立即完成()先前活动以模拟 您想要的行为。通过在所有活动中使用此方法,您可以 可以将此行为级联活动堆栈,以使您能够 从活动D转到活动A。