【问题标题】:Android app closes when back button pressed按下后退按钮时 Android 应用程序关闭
【发布时间】:2014-02-28 17:05:56
【问题描述】:

我有以下活动在选择选项卡时启动片段:

public class MainActivity extends Activity implements TabListener {
    Fragment f = null;
.....

    public void onTabSelected(Tab tab, FragmentTransaction ft) {

        .....

        if (tab.getPosition() == 0) {
            if (initalSync == true) {
                progress1.setVisibility(TRIM_MEMORY_UI_HIDDEN);
            }
            f = new EventFragment();
            Bundle data = new Bundle();
            data.putInt("idx", tab.getPosition());
            f.setArguments(data);

        }
        if (tab.getPosition() == 1) {
            progress1.setVisibility(TRIM_MEMORY_UI_HIDDEN);
            f = new MapsFragment();
            Bundle data = new Bundle();
            data.putInt("idx", tab.getPosition());
            f.setArguments(data);

        }
        .....    
        ft.replace(android.R.id.content, f);

    }

每当我按下任何片段上的手机后退按钮时,它都会关闭我的应用程序。我知道这与 backstack 有关,但我尝试过的每种方法都失败了。

有什么想法吗?

【问题讨论】:

标签: android android-fragments android-actionbar fragment back-stack


【解决方案1】:

如果您不希望活动在您按下返回时关闭,您需要将您的片段添加到后台堆栈,您所要做的就是调用以下方法:

ft.addToBackStack(null)

在您替换并提交您的交易之前。 这样您正在使用的 Fragment 注入将被跟踪,并且返回按钮将更改为 previos Fragment,直到到达第一个操作,然后它将关闭应用程序。

问候!

【讨论】:

  • 我在 ft.replace 语句上方添加了该行,它使应用程序崩溃
  • 您不是在创建自己的交易,是吗?您正在使用来自回调的那个吗?
  • 是的,这就是问题所在吗?如果是这样,我该如何解决?
  • 看看这个问题的第三个答案,似乎你正在尝试做的事情是被禁止的。 stackoverflow.com/questions/8231161/…
  • 所以我的后退按钮没用
【解决方案2】:

您需要在事务上调用addToBackstack(null) 以将片段添加到后台堆栈。然后后退按钮应该恢复到上一个​​片段。

【讨论】:

  • 你需要在replace调用后调用它。
猜你喜欢
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2014-01-02
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多