Basiclly我现在有两个屏幕。问题和答案屏幕。当您点击答案时,您认为答案出现在问题屏幕上,它会将答案屏幕告诉您是否正确。接下来的部分是从那个屏幕回到问题屏幕,并且您被问到另一个问题。目前这正在创造大量的新活动,并且很容易失控。 我需要的是知道何时问题活动得到3并停止。基本上来自于原因屏幕,您可以返回查看问题,但是当您遇到新问题时,应该删除旧的和原因页面。在活动堆栈中查找活动位置
我该怎么做?
Basiclly我现在有两个屏幕。问题和答案屏幕。当您点击答案时,您认为答案出现在问题屏幕上,它会将答案屏幕告诉您是否正确。接下来的部分是从那个屏幕回到问题屏幕,并且您被问到另一个问题。目前这正在创造大量的新活动,并且很容易失控。 我需要的是知道何时问题活动得到3并停止。基本上来自于原因屏幕,您可以返回查看问题,但是当您遇到新问题时,应该删除旧的和原因页面。在活动堆栈中查找活动位置
我该怎么做?
在答活动,你应该叫this.finish(),并且将回到问题的活动。在问题活动中,使用startActivityForResult启动AnswerActivity,以便在答案完成时通知问题Activity,这样您可以显示新的问题等,因此每个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();
}
我不知道的方式直接从框架做到这一点,但你可以做手工,(我认为)。您可以在代表问题活动的任务标识的应用程序级别维护一个整数列表。每次活动开始时,您都会将getTaskId()的值推送到此列表中。在启动活动的代码中,您可以广播问题活动响应的意图。如果它的getTaskId值处于列表中的某个位置,则可以在该活动上调用finish()并从列表中删除其任务ID。
这是一个非常哈克解决方案,但据我所经历的,singleTop launchMode是行不通的
感谢您的快速性反应。你可以发布任何代码snippits以供参考。我对这一切都很陌生。更新了 – Somk 2011-02-14 19:13:14