2

调用 popBackStack 后会调用哪个函数?我的意思是,当调用 popBackStack 后某个片段变为活动状态时,将调用哪个函数?我进行了调试,但是在完成某些活动(例如单击按钮等)后会调用 onResume。但是当片段变为活动状态时,我需要通过调用 popBackStack 来调用函数

4

1 回答 1

0

我只是有同样的问题,并试图找出在调用 popBackStack 后片段变为活动状态时调用哪个默认方法,但找不到任何调用的默认方法(这里我的意思是默认方法的 onResume、onAttached 等)。

因此,我在调用 popBackStack 之后通过显式调用活动片段的方法来解决这个问题。

例如,假设我们在同一个 Activity 中有两个 Fragment A 和 B,并且在 Fragment A 上单击了 Android 设备的返回按钮。

//fragment A
@Override
    public void onResume() {
        super.onResume();    

        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_UP && keyCode == KeyEvent.KEYCODE_BACK) {

                    // handle back button
                    FragmentManager fm = getFragmentManager();
                    fm.popBackStack();

                    //call fragment B.setBackButtonLister method
                    B fragment = (B)getFragmentManager().findFragmentByTag(B.TAG);
                    if (fragment != null){
                        fragment.setBackButtonListener();
                    }
                    return true;

                }

                return false;
            }
        });

    }

这样就可以在拿到 B 的句柄后调用 Fragment B 的任意方法。

希望这对你有帮助,干杯!

于 2016-04-18T01:18:50.943 回答