如何避免按下后退button/键返回到login布局?

我想为我的研究所创build一个应用程序。

问题是:我的应用程序将有两个布局(login和仪表板)。

学生可以正确填写login表单,进入仪表板,按下button,填写其他字段。 但是,如果用户按下后退button,则不应返回到login屏幕,而是保留在仪表板中,否则将退出应用程序。

然后,如果学生重新打开了应用程序并且已经logging,应该自动将其redirect到仪表板,而不是login屏幕,除非用户按下仪表板上的注销button,然后将其redirect回login屏幕。

你怎么能做到这一点?

编辑: 我实施了2个意图和2个活动,并且出现了新的问题,当我按下主页button并从任务pipe理器打开应用程序时,在剩下的活动中打开,但是如果打开图标打开应用程序再次从第一个活动,像在最后一个打开的是剩下的?

Solutions Collecting From Web of "如何避免按下后退button/键返回到login布局?"

我已经使用SharedPreferences实现了一些类似的东西。 我做到了这一点:

LoginActivity

 SharedPreferences settings; public void onCreate(Bundle b) { super.onCreate(b); settings = getSharedPreferences("mySharedPref", 0); if (settings.getBoolean("connected", false)) { /* The user has already login, so start the dashboard */ startActivity(new Intent(getApplicationContext(), DashBoardActivity.class)); } /* Put here the login UI */ } ... public void doLogin() { /* ... check credentials and another stuff ... */ SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("connected", true); editor.commit(); } 

在你的DashBoardActivity覆盖onBackPressed方法。 这将把你从DashBoardActivity带到你的主屏幕。

 @Override public void onBackPressed() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } 

希望能帮助到你。

一个想法是最初启动仪表板,然后如果检测到用户未login,则在新的Activity启动login。然后,可以根据需要跳过login对话框。 如果您在清单中的loginActivity中设置noHistory="true" ,则将防止在重新按下时重新出现。

将包含此活动的任务移到活动堆栈的后面。 任务内的活动顺序不变。

 @Override public void onBackPressed() { moveTaskToBack(true); super.onBackPressed(); }