关闭应用程序在Android的硬件后退按钮
我已经看到了一堆这样的帖子,但没有解决方案为我工作。我有一个应用程序,首先加载的是LoginActivity,它会检查您是否已经登录,是否将它发送给MainActivity,MainActivity是应用程序的主要内容。我的问题是,当你在MainActivity上并且你点击硬件后退按钮时,它只是重新加载MainActivity,因为我假设它试图返回到LoginActivity。关闭应用程序在Android的硬件后退按钮
我已经尝试过在这里看到的帖子的各种“修复”,但他们都没有工作。目前在我的MainActivity AndroidManifest.xml文件我已经添加了
机器人:noHistory =“真”
要在MainActivity意图,但没有做出多大的差别。我看到另一篇文章,其中有人提到基本上开始一个新的活动与一个特殊的意图,使系统加载您的主屏幕,但有人指出,如果有人加载你的应用程序,回击,然后再次做它不断增加“堆栈“,这可能是非常糟糕的。
所以我希望有人遇到类似的情况,你必须首先加载LoginActivity来验证用户,然后启动Main,但是你需要从MainActivity上按回来按钮。
感谢您提前给予任何帮助。我很感激。
创建一个函数onActivityResult
您LoginActivity
并使用startActivityForResult()
实例调用MainActivity
:
LoginActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startActivityForResult(new Intent(this, MainActivity.class), 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (data.getBooleanExtra("EXIT", false)) {
finish();
}
}
}
从MainActivity
关闭整个应用程序使用onBackPressed
。不要忘了删除super.onBackPressed()
MainActivity:
@Override
public void onBackPressed() {
// super.onBackPressed();
Intent intent = new Intent();
intent.putExtra("EXIT", true);
setResult(RESULT_OK, intent);
finish();
}
当我有这样的问题,我在 “AndroidManifest.xml中” 添加的每个活动是:
android:launchMode="singleTask"
在你loginActivity:
startActivity(new Intent(this, MainActivity.class));
finish();
检查:https://developer.android.com/guide/topics/manifest/activity-element.html
相比之下,“singleTask”和“singleInstance”活动只能开始一项任务。它们始终处于活动堆栈的根部。而且,该设备一次只能保存一个活动实例 - 只有一个这样的任务。
我有一个应用程序,第一个屏幕是一个飞溅的活动(显示我的标志),几秒钟后它进入MainActivity。在启动MainActivity后,在您的LoginActivity中关闭您的LoginActivity。 做这样的事情:
Intent mainIntent = new Intent(LoginActivity.this,MainActivity.class);
LoginActivity.this.startActivity(mainIntent);
LoginActivity.this.finish();
你可以试试我的代码:
void gotoLogin() {
Intent t = new Intent(SplashScreenActivity.this, LoginActivity.class);
finish();
startActivity(t);
}
和
void gotoMainActivity() {
Intent t = new Intent(SplashScreenActivity.this, MainActivity.class);
finish();
startActivity(t);
}
您检查
if (you logged in){
gotoMainActivity();
} else {
gotoLogin();
}
后,我希望它可以帮助你问题! 谢谢!