0

我有一个登录活动,我只想在启动时以及用户注销时显示。因此,当用户处于登录活动并单击后退按钮时,我想关闭应用程序而不是返回登录活动。

我已经成功覆盖了后退按钮回调:

public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
    if (keyCode == Keycode.Back)
    {
        Console.Out.WriteLine("Close activity");
        return true;
    }

    return base.OnKeyDown(keyCode, e);
}

这会阻止后退按钮返回上一个活动。但是,包括Finish();beforereturn true确实会使登录活动重新出现:(

这是我登录后使用的代码:

Intent activity = new Intent(this, typeof(WorkOrderActivity));
StartActivity(activity);

尝试了几个 Intentflags 和 LaunchModes 但无法使其正常工作。根据日志,登录后仅启动一项活动。

4

4 回答 4

2

试试这个有效..

Intent mIntent = new Intent(this, WorkOrderActivity.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);

finish();
于 2013-02-25T14:56:08.433 回答
2

Activity显示前一个后是正常行为finish()

finish()方法只是关闭调用它的Activity

您可以隐藏您的登录表单并在您的onResume()登录活动中检查用户登录状态(如果他已登录,则完成它)

于 2013-02-25T14:56:43.300 回答
0

从登录活动开始另一个活动时,您应该清除堆栈。

Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK |      Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

当用户注销时,您可以启动 LoginActivity。

于 2013-02-25T14:52:25.487 回答
0
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
    if (keyCode == Keycode.Back)
    {
        moveTaskToBack(true);
        return true;
    }

    return base.OnKeyDown(keyCode, e);
}
于 2013-02-25T14:55:25.303 回答