如果我有跟随路径的活动,
A --> B --> C --> D
目前我在活动D中。所以如果我想直接回到B,那怎么可能呢?
我按照以下方式完成。
List<Activity> activities = new ArrayList<>();
此列表将包含所有已加载的活动,这意味着在onCreate()
方法上添加到此列表的活动。
所以目前这个列表会有A, B, C, D
,所以如果想直接回到B
那么我要做的就是从这个列表中获取最后两个活动并使用{{1 }}。我知道这不是正确的方法。
所以我想知道,是否有更好的方法可以做到这一点?。
注意:在某些情况下,我只会直接进入活动B,所以我不能 在开始活动D时完成C.
更新
此外,我可以直接从活动D返回活动A,所以我的问题是
我可以随时跳过任何活动,也可以回到任何活动 随时活动
有可能吗?
答案 0 :(得分:2)
从活动C开始活动D时,您应该使用startActivityForResult。
每当您想要完成活动C时,请确保在即将完成活动时在活动D中执行setResult(RESULT_OK)。
在活动C中,覆盖onActivityResult并执行以下操作:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK)
return;
if (requestCode == REQUEST_CODE_SHOULD_FINISH_ACTIVITY) {
//add any other code you might wanna add
finish();
}
}
答案 1 :(得分:0)
我认为您应该使用IntentFlag清除之前的所有活动。 你必须阅读本教程以获得更多的清晰。
Main Reference : http://developer.android.com/guide/components/tasks-and-back-stack.html
Source : http://tips.androidhive.info/2013/10/how-to-clear-all-activity-stack-in-android/
Exception
答案 2 :(得分:0)
你可以为每个活动实现单独的OnBackPressed()方法并移动到你想要的任何活动,但是如果你想保存当前活动的实例,你还需要使用StartActivityForResult()方法。
答案 3 :(得分:0)
像你这样在你的D Actvity上使用onBackPressed方法。
@Override
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent(D.this, B.class);
startActivity(i);
}