完成活动后跳过后面堆栈中的项目?

时间:2018-06-12 03:41:23

标签: android

我有一个显示项目列表的活动。当您点按某个项目时,它会启动另一项活动以查看该项目的详细信息。在详细信息活动中,如果单击编辑按钮,则会启动第三个活动进行编辑。

在编辑活动的用户界面中,我有一个删除按钮。点击按钮并删除项目时,我想返回项目列表,即第一个活动。但是,如果我只是在编辑活动上调用finish(),它将返回详细信息活动。这是不对的,因为该项目不再存在 - 它刚被删除。

处理此问题的最佳方法是什么?我可以创建一个Intent并启动列表活动的新实例,但这似乎不是正确的事情。完成活动后是否可以从后堆栈中弹出多个项目?

4 个答案:

答案 0 :(得分:2)

如果基于您正在启动的Activity中的互动产生意外事件,您可以startActivityForResult()OnActivityResult()setResult()一起使用{ {1}}您需要知道来自的结果。

然后,您还可以根据结果完成中间活动。看一下这个link

答案 1 :(得分:0)

使用清理任务破坏当前活动的最简单方法并重新使用ListActivity;

删除按钮操作:

Intent newIntent = new Intent(EditActivity.this,ListActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(newIntent); 
finish();

你可以使用setActivityForResult

答案 2 :(得分:0)

删除项目后使用此项 -

startActivity(new Intent(this, YourActivity.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    YourActivity.this.finish();

答案 3 :(得分:0)

Intent i = new Intent(...); // Your list's Intent
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
startActivity(i);

FLAG_ACTIVITY_NO_HISTORY标志使新活动不会被添加到历史堆栈中。