基本上我现在有两个屏幕。问答屏幕。当您单击答案时,您认为它在问题屏幕上,它会将您带到答案屏幕,告诉您是否正确。下一部分是从该屏幕返回到问题屏幕,然后您会被问到另一个问题。目前,这会产生大量新活动,并且很容易失控。 我需要的是知道什么时候问题活动得到3并停止。基本上从原因屏幕中您可以返回查看问题,但是当您处理新问题时,它应该删除旧页面和原因页面。
我该怎么做?
答案 0 :(得分:1)
在答案活动中,您应该调用this.finish(),然后返回问题活动。并且在Question Activity中使用startActivityForResult启动AnswerActivity,这样当Answer完成时会通知Activity一个问题,所以你可以显示一个新的Question等等。所以每个AnswerActivity都会被销毁。如果您需要帮助,请发布代码示例。如果您以这种方式构建,则不需要在堆栈中查找活动。
问题活动
this.startActivityForResult(Intent, requestCode); // somewhere in your code to launch the Answer Activity
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// now we have returned from the AnswerActivity and it has been destroyed
// do any processing here on the answer or show a new question.
}
回答活动
public void onBackClick(View v) {
//on click handler for a back button or something.
this.setResult(resultCode, Intent /* some data to give back to parent */);
this.finish();
}
答案 1 :(得分:0)
我不知道从框架直接执行此操作的方法,但您可以手动执行(我认为)。您可以在应用程序级别维护一个整数列表,表示问题活动的任务ID。每次Activity启动时,都会将getTaskId()的值推送到此列表中。在启动活动的代码中,您可以广播问题活动响应的意图。如果getTaskId值位于列表中的某个位置,则可以在活动上调用finish()并从列表中删除其任务ID。
这是一个非常hacky的解决方案,但据我所见,singleTop launchMode只是不起作用