【问题标题】:How to add back pressed button in diffeent fragment?如何在不同的片段中添加后按按钮?
【发布时间】:2019-11-06 15:42:44
【问题描述】:

我使用带有 3 个主要 Fragment 的 BottomNavigationView,例如 Fragment [A], [B], [C]。 而Fragment [A] 是默认片段,如果Fragment [B][C]back button 必须返回Fragment A。在fragment [B] 中,我添加按钮以获取另一个片段,只需调用它Fragment [D],但如果在片段D 中我按下返回按钮应用程序返回fragment [A]

那么当fragment [D]按下返回按钮时如何返回Fragment [B]

【问题讨论】:

标签: java android fragment


【解决方案1】:

您可以使用片段堆栈。在活动中实现 onBackPressed()。

@Override
public void onBackPressed() {
    //Work with fragments stack...

    int count = getSupportFragmentManager().getBackStackEntryCount();    
    if (count == 0) {
        super.onBackPressed();
    } else {
        getSupportFragmentManager().popBackStack();
    }

}

【讨论】:

    【解决方案2】:

    Fragment 没有 onBackPressed 函数。
    这就是为什么你应该为 backPressed 事件定义回调接口。

        public interface IFragment {
            boolean onBackPressed();
        }
    

    然后,您应该实现您的片段 [A]、[B]、[C]、[D]。

        @Override
        public boolean onBackPressed() {
            return true;
        }
    

    您应该在 Fragments 的宿主活动中处理它。

        @Override
        public void onBackPressed() {
            List<Fragment> fragments = getSupportFragmentManager().getFragments();
    
            boolean handled = false;
            for(Fragment f : fragments) {
                if(f instanceof IFragment) {
                    handled = ((IFragment) f).onBackPressed();
                    if(handled) {
                        FragmentManager fm = getSupportFragmentManager();
                        for(String name : fragmentNames) {
                            fm.popBackStack(name, 0);
                        }
                        fm.beginTransaction().commit();
                    }
                }
            }
    
            super.onBackPressed();
        }
    

    我刚刚实现了代码,让你知道你必须知道什么。
    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2017-05-05
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多