我有一些活动,无法找到使其与后台堆叠一起工作的方法。
有没有办法做到这一点:
MainActivity - >(intent)subActivity - >(intent)subsubActivity->(back press)subActivity-> *(back press)MainActivity
*这是我遇到问题的地方。由于我来自我的subsubActivity,甚至认为我在清单中使用了android:noHistory =“true”,它不会回到主要活动。
感谢您的帮助!
答案 0 :(得分:1)
这是在调用startActivityForResult
中使用onActivityResult
和覆盖Activity
的组合的完美候选。
假设你有Activity A
,它开始Activity B
(我们无法移回),从Activity C
开始:
Activity A
将以您现在的方式致电Activity B
。但是,Activity B
会拨打startActivityForResult(Intent, int)
而不是startActivity(Intent)
。这样,当我们从Activity C
返回时,我们可以在finish()
上致电Activity B
并返回Activity A
,如下所示:
public class ActivityB extends Activity {
private static final int REQUEST_CODE_ACTIVITY_C = 1001;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == REQUEST_CODE_ACTIVITY_C) finish(); // If coming back from Activity C, finish()
}
private void openActivityC(){
Intent intent = new Intent(this, ActivityC.class);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_C);
}
}
现在,当您致电openActivityC()
时,您确保从onActivityResult()
返回时会调用Activity C
,从而允许您结束Activity
并返回回到Activity A
。
您可以提供更具体的操作(例如设置/检查结果代码(例如,如果它取消(Activity.RESULT_CANCELED
)或成功(Activity.RESULT_OK
))状态,以更好地确定调用的内容Activity
应该这样做。
希望这有助于解释一下。
编辑:也是事后的想法,如果你没有机会回到活动B,那么@Kay解决了在调用Intent之后调用finish()的问题对于活动C来说,这是最简单的方法。
答案 1 :(得分:0)
如果我得到了你想要的东西你可以使用startActivities一系列的意图,这些意图将一个接一个地激活1 - > activity2-> activity3 -back-activity2 -back-acitivty1