【发布时间】:2016-10-25 13:54:57
【问题描述】:
我不知道如何表达这个问题。
我的应用程序有一个简单的 ViewPager,您单击其中一个页面 Fragments 中的某些内容,它会将您带到另一个 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);
}
【问题讨论】:
-
您在开始新活动时是否致电
finish()? -
我在帖子中添加了一些代码
-
FInish() 和 super.onBackPress() 都可以使用其中任何一种方法。
-
@ramji 这就是导致我的问题的原因吗?打电话给他们两个?
-
@DavidWasser !!!!!!!!!!!!那重现了我的问题!天哪,这正是正在发生的事情。我将使用您编写的根代码再次尝试并报告。
标签: android android-fragments android-intent android-activity back-stack