2017-10-17 117 views
1

我已经看到了一堆这样的帖子,但没有解决方案为我工作。我有一个应用程序,首先加载的是LoginActivity,它会检查您是否已经登录,是否将它发送给MainActivity,MainActivity是应用程序的主要内容。我的问题是,当你在MainActivity上并且你点击硬件后退按钮时,它只是重新加载MainActivity,因为我假设它试图返回到LoginActivity。关闭应用程序在Android的硬件后退按钮

我已经尝试过在这里看到的帖子的各种“修复”,但他们都没有工作。目前在我的MainActivity AndroidManifest.xml文件我已经添加了

机器人:noHistory =“真”

要在MainActivity意图,但没有做出多大的差别。我看到另一篇文章,其中有人提到基本上开始一个新的活动与一个特殊的意图,使系统加载您的主屏幕,但有人指出,如果有人加载你的应用程序,回击,然后再次做它不断增加“堆栈“,这可能是非常糟糕的。

所以我希望有人遇到类似的情况,你必须首先加载LoginActivity来验证用户,然后启动Main,但是你需要从MainActivity上按回来按钮。

感谢您提前给予任何帮助。我很感激。

回答

2

创建一个函数onActivityResultLoginActivity并使用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(); 
} 
0

当我有这样的问题,我在 “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”活动只能开始一项任务。它们始终处于活动堆栈的根部。而且,该设备一次只能保存一个活动实例 - 只有一个这样的任务。

1

我有一个应用程序,第一个屏幕是一个飞溅的活动(显示我的标志),几秒钟后它进入MainActivity。在启动MainActivity后,在您的LoginActivity中关闭您的LoginActivity。 做这样的事情:

 Intent mainIntent = new Intent(LoginActivity.this,MainActivity.class); 
    LoginActivity.this.startActivity(mainIntent); 
    LoginActivity.this.finish(); 
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(); 
} 

后,我希望它可以帮助你问题! 谢谢!

相关问题