为什么有时当我按下后退按钮时,活动比应有的多?
How come sometimes when I press back button, there are more Activities than there should be?
我不知道如何表达这个问题。
我的应用程序有一个简单的 ViewPager,您单击其中一个页面片段中的某个内容,它会将您带到另一个 Activity。按后退按钮,它会将您带回到 ViewPager。再按一次返回,它会关闭应用程序。
但是,有时当我在 ViewPager 上按下后退键时,它又将我带回到另一个 Activity,然后我按下返回键,它又将我带到 ViewPager,依此类推,直到该应用程序终于关闭了。换句话说,就像在后台堆栈中有 ViewPager 或其他 Activity 的备用剩余实例(我认为它被称为),但我不知道这是如何发生或为什么发生的。
我也不知道如何重现错误,这更令人沮丧。大部分时间它都按预期工作,但有时剩余的实例会在我按下时突然出现。
我如何更好地保证当我按下另一个 Activity 上的后退按钮时,它会返回到 ViewPager,当我按下 ViewPager 上的后退按钮时,它会关闭应用程序?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: //called when I press back button on the phone or the back-arrow on the toolbar
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//and then usually that's all I have, but in one particular Activity, I do override the function:
@Override
public void onBackPressed() {
if (some conditions are met) {
finish();
super.onBackPressed();
}
else {
//display some error message
}
}
以下是我启动活动的方式:
public void launchSomeActivity() {
Intent intent = new Intent(getActivity(), ActivityName.class);
intent.putExtra( etc etc etc );
startActivityForResult(intent, REQUEST_CODE);
}
您可能遇到了一个长期存在的令人讨厌的 Android 错误。如果您第一次从 IDE 或安装程序启动您的应用程序,当您将应用程序置于后台并从主屏幕再次启动它时,Android 会创建您的根目录的另一个实例Activity。这将准确展示您所报告的行为。如果您通过在主页屏幕(或可用应用程序列表)中按应用程序图标来首次启动该应用程序,则不会出现该问题。
见Re-launch of Activity on Home button, but...only the first time
我不知道如何表达这个问题。
我的应用程序有一个简单的 ViewPager,您单击其中一个页面片段中的某个内容,它会将您带到另一个 Activity。按后退按钮,它会将您带回到 ViewPager。再按一次返回,它会关闭应用程序。
但是,有时当我在 ViewPager 上按下后退键时,它又将我带回到另一个 Activity,然后我按下返回键,它又将我带到 ViewPager,依此类推,直到该应用程序终于关闭了。换句话说,就像在后台堆栈中有 ViewPager 或其他 Activity 的备用剩余实例(我认为它被称为),但我不知道这是如何发生或为什么发生的。
我也不知道如何重现错误,这更令人沮丧。大部分时间它都按预期工作,但有时剩余的实例会在我按下时突然出现。
我如何更好地保证当我按下另一个 Activity 上的后退按钮时,它会返回到 ViewPager,当我按下 ViewPager 上的后退按钮时,它会关闭应用程序?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: //called when I press back button on the phone or the back-arrow on the toolbar
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//and then usually that's all I have, but in one particular Activity, I do override the function:
@Override
public void onBackPressed() {
if (some conditions are met) {
finish();
super.onBackPressed();
}
else {
//display some error message
}
}
以下是我启动活动的方式:
public void launchSomeActivity() {
Intent intent = new Intent(getActivity(), ActivityName.class);
intent.putExtra( etc etc etc );
startActivityForResult(intent, REQUEST_CODE);
}
您可能遇到了一个长期存在的令人讨厌的 Android 错误。如果您第一次从 IDE 或安装程序启动您的应用程序,当您将应用程序置于后台并从主屏幕再次启动它时,Android 会创建您的根目录的另一个实例Activity。这将准确展示您所报告的行为。如果您通过在主页屏幕(或可用应用程序列表)中按应用程序图标来首次启动该应用程序,则不会出现该问题。
见Re-launch of Activity on Home button, but...only the first time