2013-02-25 140 views
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();return true之前确实让登录活动重现:(

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

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

试过一对夫妇Intentflags和LaunchModes的,但不能让它开始工作。根据在日志只有一个活动登录后启动。

+1

你有没有考虑过一种“不可见”的飞溅活动(主题:没有显示)的可能性,它检查用户是否登录并开始适当的活动?这将是一个更好的方法,让我知道如果你需要一些 – Droidman 2013-02-25 14:52:22

+0

检查我的答案 – moDev 2013-02-25 15:16:13

回答

2

这是正常的行为,显示上一个Activityfinish()

finish()方法只是关闭其称之为

你的活动可以隐藏您的登录表单并在您的登录活动onResume()上检查用户登录状态(并在if他被记录)

+0

这工作。认为'完成()'会退出整个应用程序。 – Sunkas 2013-02-25 15:38:09

+0

不要忘记检查你是否刚刚打开应用程序,因为如果你没有,并且用户已经在启动时登录,应用程序将立即关闭:p – 2013-02-25 15:47:27

+0

我只是在登录之后完成了“完成”。类似于@Mitesh的建议,但没有标志。 – Sunkas 2013-02-25 16:03:04

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。

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

    return base.OnKeyDown(keyCode, e); 
} 
2

试试这个它的工作原理..

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

finish();