【问题标题】:How to exit current activity to homescreen (without using "Home" button)?如何将当前活动退出到主屏幕(不使用“主页”按钮)?
【发布时间】:2010-05-03 14:36:34
【问题描述】:

我确信这将得到解答,但我证明无法找到它。所以请原谅我的冗余。

我想做的是模拟“主页”按钮,该按钮将一个人带回 Android 的主屏幕。所以这就是导致我问题的原因:

  • 我有 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();,但这奇怪地再次出现了“谢谢”屏幕。那么如何才能直接跳回主屏幕退出呢?

很抱歉给您带来不便。
问候,
斯特夫

【问题讨论】:

    标签: android android-activity exit homescreen


    【解决方案1】:

    听起来好像是您同时打开了多个活动副本。每次您启动一个新的活动实例时,您只是将新的活动添加到堆栈中 - 所有旧活动仍然存在。当您致电this.finish() 时,它只会向您显示下一个最近打开的活动。我不确定为什么会出现“谢谢”屏幕,因为大概它只会在最后打开,但是我没有完全按照你的活动被调用的顺序。

    您可以尝试解决的方法是:1) 每次针对不同问题开始新活动后使用 finish()(这样一次只打开一个问题活动),或 2)看看你是否可以使用意图标志 CLEAR_TOP。这会启动目标活动,同时杀死堆栈中可能在它之上的任何东西。例如,如果您有活动:A、B、C、C、C、C、C(每个问题等),那么以 CLEAR_TOP 开头的 A 将终止 B 和 C 的所有实例。您可以将其放入您的程序结构中通过更改用户在开始调查问卷时看到的第一个屏幕。默认情况下,这将显示一条“欢迎”消息,并带有一个开始调查问卷的按钮。但是,如果它以与意图绑定的特定值开头,则会显示“谢谢”消息。

    如果您这样做,那么一旦您finish() 活动 A,用户将返回到他们在启动您的应用程序之前的任何位置 - 如果它是使用应用程序小部件启动的,则可能是主屏幕。

    【讨论】:

    • 谢谢,我会试一试。我在阅读您的回答后,我想知道我是否采用了完全错误的方法来制作问卷......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多