【问题标题】:Skip fragments onBackPressed (add/hide)跳过片段 onBackPressed(添加/隐藏)
【发布时间】:2016-06-20 10:18:34
【问题描述】:

我正在使用 fragmentTransaction 来处理片段,它看起来像这样:

        FragmentManager fm = oldFragment.getFragmentManager();
        FragmentTransaction fragmentTransaction = fm.beginTransaction();
        fragmentTransaction.add(oldFragment.getId(), newFragment, tag);
        fragmentTransaction.hide(oldFragment);
        fragmentTransaction.addToBackStack(tag);
        fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        fragmentTransaction.commit();

有几个片段,我想在返回时跳过其中的一些。

例子:

Frag1 ->(按下一步)-> Frag2 ->(按下一步)-> Frag3 ->(按返回)-> Frag1

当我使用 replace 而不是 add and hide 时,此解决方案有效

getFragmentManager().popBackStack(
    tag, 
    FragmentManager.POP_BACK_STACK_INCLUSIVE);

参考`Skip some fragments onBackPressed

但在我的情况下,跳过的片段会显示片刻。我怎样才能让它之间的碎片从未存在过?

【问题讨论】:

  • 我不知道我是否理解正确,但您是否尝试使用 fragmentTransaction.remove(FRAGMENT_YOU_NEED);做两次
  • 还有动画问题
  • 好的,但是碎片被删除了?它只是动画?
  • 是的,它工作正常,片段被移除,但中间片段会显示一小会

标签: android android-fragments fragmenttransaction onbackpressed fragment-backstack


【解决方案1】:

我使用此功能删除碎片告诉我是否有帮助。

public static void removeFragment(FragmentActivity activity) {
    try {
        FragmentManager supportFragmentManager = activity.getSupportFragmentManager(); // getFragmentManager();
        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
        fragmentTransaction.setCustomAnimations(R.anim.slide_down, R.anim.slide_up);
        fragmentTransaction.remove(supportFragmentManager.getFragments().get(0));

        try {
            fragmentTransaction.commit();

        } catch (Exception e) {
        }
        supportFragmentManager.popBackStack();

    } catch (NullPointerException exception) {
        exception.printStackTrace();
    }
}

【讨论】:

  • 没有 getFragments() 方法。 (最小 api 为 19,我没有使用支持)
  • 你能把它替换成 supportFragmentManager.findFragmentByTag("TAG") 吗?检查这是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 2011-09-07
  • 1970-01-01
  • 2016-12-06
  • 2019-06-27
  • 1970-01-01
相关资源
最近更新 更多