如何在片段中使用onBackPressed方法

时间:2018-06-28 05:21:27

标签: android fragment onbackpressed

我在导航抽屉活动中有片段(A,B,C),分别有片段A和B的子片段(A2,A3,B2,B3)。 我需要它们像这样工作:1)A-> B-> C-> B.当我按下“后退”按钮时,我需要返回A。也就是说,片段A是主要的2)A-> A2- > A3当我按下后退按钮时,我需要先返回A2,然后返回A。我尝试使用addToBackStack(),它对第二个示例有所帮助,但对第一个示例没有帮助。所以,帮助我,非常感谢))) (对不起,我的英语听不懂)

2 个答案:

答案 0 :(得分:1)

第1步:制作一个这样的界面

public interface HostInterface {
        void changeCurrentFragmentTo(int currentFragmentId, Bundle bundle);
    }

   implement it in your Main Activity.

第2步。在您的片段中

    private HostInterface hostInterface;

        @Override
            public void onAttach(Context context) {
                super.onAttach(context);
                hostInterface = (HostInterface) context;
            }

        @Override
            public void onActivityCreated(@Nullable Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);

                if (getView() != null) {
                    getView().setFocusableInTouchMode(true);
                    getView().requestFocus();
                    getView().setOnKeyListener(new View.OnKeyListener() {
                        @Override
                        public boolean onKey(View v, int keyCode, KeyEvent event) {
                            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                                if (keyCode == KeyEvent.KEYCODE_BACK) {
                                    **hostInterface.changeCurrentFragmentTo(yorfragment,null);**
                                    return true;
                                }
                            }
                            return false;
                        }
                    });
                }
            }

第3步。现在您可以拨回Activity了。按照您的New Fragment呼叫Requirement

答案 1 :(得分:0)

您可以使用FragmentManager直接寻址要显示或隐藏的片段。

ScrollBar