我看过很多像这样的帖子,但没有一个解决方案对我有用。我有一个应用程序,其中首先加载的是LoginActivity,它检查您是否已经登录,如果您将它发送到MainActivity,这是应用程序的主要部分。我的问题是,当你使用MainActivity并点击硬件后退按钮时,它只是重新加载MainActivity,因为我假设它试图“返回”LoginActivity。
我在这里看过的帖子中尝试过各种“修复”,但似乎都没有。目前在我的MainActivity的AndroidManifest.xml文件中,我添加了
机器人:noHistory = “真”
对于MainActivity意图,但这并没有太大的区别。我看过另一个帖子,有人提到基本上用一个特殊的Intent开始一个新的Activity,让系统加载你的主屏幕,但有人指出,如果有人加载你的应用程序,点击回来,然后再次执行它继续添加到“堆栈“,这可能非常糟糕。
所以我希望有人遇到过类似的东西,你必须首先加载LoginActivity以验证用户,然后启动Main,但是你需要在MainActivity上按下后退按钮。
提前感谢您的帮助。我很感激。
答案 0 :(得分:3)
为onActivityResult
创建一个LoginActivity
函数,然后使用MainActivity
startActivityForResult()
示例:强>
<强> 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();
}
答案 1 :(得分:1)
我有一个应用程序,第一个屏幕是一个启动活动(显示我的徽标),几秒钟后它转到MainActivity。在您的LoginActivity中,在启动MainActivity后关闭LoginActivity。 做这样的事情:
Intent mainIntent = new Intent(LoginActivity.this,MainActivity.class);
LoginActivity.this.startActivity(mainIntent);
LoginActivity.this.finish();
答案 2 :(得分:0)
当我遇到这类问题时,我会添加&#34; AndroidManifest.xml&#34;对于每个活动:
android:launchMode="singleTask"
在您的loginActivity中:
startActivity(new Intent(this, MainActivity.class));
finish();
请检查:https://developer.android.com/guide/topics/manifest/activity-element.html
相比之下,&#34; singleTask&#34;和&#34; singleInstance&#34;活动只能开始一项任务。它们始终位于活动堆栈的根部。此外,设备一次只能保存一个活动实例 - 只有一个这样的任务。
答案 3 :(得分:0)
您可以尝试我的代码:
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();
}
我希望它可以帮助你解决问题! 谢谢!