通过共享菜单转发意图后返回按钮问题

时间:2011-09-01 18:40:41

标签: android

我正在为我的应用程序登录屏幕。如果我打开应用程序,通过从eclipse运行或选择安装在模拟器上的应用程序图标,它将运行一个AuthUser.class,它检查远程服务器上的有效令牌。如果用户未登录,则AuthUser.class将通过...

转发到Login.class
if (authtoken.length() == 0 || authtoken.length() > 0
            && checkAuthToken(authtoken) == false) {
        Intent intent = new Intent();
        intent.setClass(AuthUser.this, Login.class);
        startActivity(intent);
        finish();
    }

这很有效,因为当我使用模拟器上的后退按钮时,它将关闭应用程序而不是返回登录屏幕。完美。

现在,当我来自共享菜单时,就像我在图库中的图像上选择共享图标,然后从弹出菜单中选择我的应用程序时,我也转发到Login.class ...

Intent intent1 = new Intent();
                intent1.setClass(SharePictureMenu.this, AuthUser.class);
                startActivity(intent1);
                finish();

现在,当我从这里登录并按照惯例转发到AuthUser.class时,现在按下后退按钮会将我带回登录屏幕,即使我在两种情况下转发和完成完全相同。显然我不希望这种行为,因为我希望它关闭应用程序并在登录后返回到库,这样用户可以继续立即共享图像,而无需返回登录屏幕。

任何建议,黑客或其他方面的修复都将非常感激。

1 个答案:

答案 0 :(得分:2)

如果您在该活动上调用finish(),则在该函数返回之前,它将被活动管理器标记为已完成,并且用户无法返回该活动。我不知道这种情况不可能发生。确保你实际上正在完成那项活动,而且你没有做过两次这样的活动。

一些有用的调试工具:

  • “adb logcat”的输出将包含每个已启动活动的日志。
  • “adb logcat -b events”的输出将包含已完成的每个活动的日志,以及它完成的原因(以及各种其他活动操作)。您可以将此与另一个与“adb logcat -b events -b system”结合使用。
  • “adb shell dumpsys activity”将为您提供当前活动堆栈,以便您可以查看为您的应用管理的当前活动以及它们与其他活动的关联。