我有一个显示项目列表的活动。当您点按某个项目时,它会启动另一项活动以查看该项目的详细信息。在详细信息活动中,如果单击编辑按钮,则会启动第三个活动进行编辑。
在编辑活动的用户界面中,我有一个删除按钮。点击按钮并删除项目时,我想返回项目列表,即第一个活动。但是,如果我只是在编辑活动上调用finish()
,它将返回详细信息活动。这是不对的,因为该项目不再存在 - 它刚被删除。
处理此问题的最佳方法是什么?我可以创建一个Intent并启动列表活动的新实例,但这似乎不是正确的事情。完成活动后是否可以从后堆栈中弹出多个项目?
答案 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标志使新活动不会被添加到历史堆栈中。