我得到一个奇怪的导航行为,我不知道为什么它不会发生如何解决它。
我刚在Android Studio 2.1中创建了一个新项目,并在活动库中添加了Login Activity
和Master/Detail Flow Activity
。
我在attemptLogin()
内添加了以下代码到LoginActivity
:
Intent intent = new Intent(this, ItemListActivity.class);
startActivity(intent);
这样,应用会在Login Activity
中打开,当我点击Sign In
按钮时,它会跳转到Master/Detail Flow Activity
....到目前为止,非常好......但是,当我点击Master/Detail Flow Activity
工具栏上的返回主页按钮时,应用会关闭,它不会按预期返回Login Activity
。
Master/Detail Flow Activity
按预期工作,如果我点击某个项目,则会打开一个新的Activity
并显示该项的详细信息,并且它的后退按钮按预期工作,该应用返回List Activity
。
我无法在Login Activity
或Master/Detail Flow Activity
中找到任何会改变后台筹码的代码,我甚至添加了第二个Login Activity
,让应用程序继续:< / p>
Login Activity 1
- &gt; Login Activity 2
- &gt; Master/Detail Flow Activity
现在Login Activity 1
和Login Activity 2
之间按预期工作,但当我尝试从Master/Detail Flow Activity
返回时,它会关闭应用,而不是返回Login Activity 2
。 ..而且我无法在Master/Detail Flow Activity
中找到任何会改变后台堆栈的代码。我的AndroidManifest
也应该是它(它是由Android Studio自动生成的,我没有改变任何东西)。
我甚至试图做一个:
Login Activity 1
- &gt; Login Activity 2
- &gt; Master/Detail Flow Activity 1
- &gt; Master/Detail Flow Activity 2
错误仍然存在于Login Activity 2 -> Master/Detail Flow Activity 1
之间......但它在Master/Detail Flow Activity 1 -> Master/Detail Flow Activity 2
和Login Activity 1 -> Login Activity 2
之间按预期工作...所以再次,没有线索,这变得非常奇怪,由于此测试表明它不在Login Activity
调用新Activity
,而且在Master/Detail Flow Activity
接收中都没有,但仅在这两个特定{{1}之间的接口中}。
任何人都可以轻松地尝试重现,只需创建一个新项目并按照我的说法创建Activities
。 如何回到Activities
?为什么会这样?
编辑:
测试here
的完整代码答案 0 :(得分:2)
您的问题是因为在您的内部类UserLoginTask中,它在LoginActivity类中,您在 onPostExecute()方法中调用 finish()。删除此行,您会发现应用程序正常运行。 所以它会是这样的:
@Override
protected void onPostExecute(final Boolean success) {
mAuthTask = null;
showProgress(false);
if (!success) {
mPasswordView.setError(getString(R.string.error_incorrect_password));
mPasswordView.requestFocus();
}
}
我测试过并且按预期工作了!