活动在Finish()上重新启动

时间:2013-02-25 14:47:36

标签: android android-intent xamarin.android

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

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

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();之前添加return true确实会重新显示登录活动:(

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

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

尝试了几个Intentflags和LaunchModes,但无法让它工作。根据日志,登录后只启动一项活动。

4 个答案:

答案 0 :(得分:2)

试试这个有用..

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

finish();

答案 1 :(得分:2)

Activity

之后显示上一个finish()的正常行为

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

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

答案 2 :(得分:0)

从Login活动开始另一项活动时,您应该清除堆栈。

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。

答案 3 :(得分:0)

public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
    if (keyCode == Keycode.Back)
    {
        moveTaskToBack(true);
        return true;
    }

    return base.OnKeyDown(keyCode, e);
}