我相信这将得到回答,但事实证明我找不到。所以请原谅我的冗余。

我要做的是效仿“家庭”按钮,该按钮将一个按钮带回Android的HomeScreen。所以这是使我问题的原因:

  • 我有3个发射器活动。第一个(连接到房屋屏幕图标)只是(密码保护的)配置活动。用户不会使用它(只有管理员)
  • 另一个2(均通过应用程序小部件访问)之一是问卷应用程序。我还可以通过后退按钮或GUI后台跳回问题之间。问卷完成后,我总结了给出的答案,并提供一个“完成”按钮,该按钮应将用户带回主屏幕。

对于调查表应用程序,我使用单个活动(称为itemActivity),该活动称为自己(使用意图时也是递归吗?)从一个问题跳到另一个问题:

Questionnaire.serializeToXML();  
Intent i = new Intent().setClass(c, ItemActivity.class);  
if(Questionnaire.instance.getCurrentItemNo() == Questionnaire.instance.getAmountOfItems()) {  
    Questionnaire.instance.setCompleted(true);  
} else Questionnaire.instance.nextItem();  
startActivity(i);

最后的屏幕显示了“谢谢您参与”之类的内容以及以前描述的按钮,该按钮应该带回房屋屏幕。但是我真的没有如何正确退出活动。我已经用过了 this.finish(); 但这奇怪地提出了“谢谢”屏幕。那么,我如何才能跳回房屋屏幕呢?

对不起,这无关。
问候,
史蒂夫

有帮助吗?

解决方案

It sounds like what's happening is that you've got multiple copies of your activities open at the same time. Every time you start a new instance of an activity you're just adding new ones to the stack - all the old activities are still there.你打电话时 this.finish(), ,它只是向您展示了下一个开放的活动。我不确定为什么这是“感谢”屏幕,因为大概只是在最后才打开,但是我没有完全遵循您的活动的序列。

您可以尝试修复它的方法是:1)使用 finish() 每次开始针对另一个问题的新活动(因此一次只有一个问题活动),或者2)查看您是否可以使用Intern flag clear_top。这启动了目标活动,同时杀死了可能在堆栈中超过其上方的任何东西。例如,如果您有活动:A,B,C,C,C,C,C,C(每个问题)通过更改第一个屏幕,用户启动问卷时会看到。默认情况下,这将显示“欢迎”消息,并使用按钮启动问卷。但是,如果它以与意图捆绑在一起的特定值开始,它将显示“谢谢”消息。

如果您这样做,那就一旦 finish() 活动A,用户将在启动您的应用程序之前的任何地方返回到任何地方 - 大概是appwidget启动的房屋屏幕。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top