片段变为活动状态后将调用哪个函数

时间:2013-08-17 16:08:00

标签: android android-fragments

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

来调用片段变为活动时的函数

1 个答案:

答案 0 :(得分:0)

我刚才遇到了同样的问题,并试图找出在调用popBackStack后片段变为活动状态时调用的默认方法,但是找不到任何调用的默认方法(这里我的意思是onResume,onAttached等默认情况下方法)。

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

例如,假设我们在同一个活动中有两个片段A和B,并在片段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的句柄后调用片段B的任何方法。

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