2

popBackStack が呼び出された後に呼び出される関数は? つまり、popBackStack を呼び出した後に特定のフラグメントがアクティブになると、どの関数が呼び出されるのでしょうか。私はデバッグを行いましたが、ボタンをクリックするなどの特定のアクティビティが行われた後に onResume が呼び出されます。

4

1 に答える 1

0

同じ質問があり、popBackStack を呼び出した後にフラグメントがアクティブになったときに呼び出されるデフォルト メソッドを見つけようとしましたが、呼び出されるデフォルト メソッドが見つかりませんでした (ここでは、デフォルト メソッドで onResume、onAttached などを意味します)。

したがって、popBackStack を呼び出した直後に、アクティブなフラグメントのメソッドを明示的に呼び出すことで解決しました。

たとえば、同じアクティビティに 2 つのフラグメント 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 の任意のメソッドを呼び出すことができます。

これがお役に立てば幸いです、乾杯!

于 2016-04-18T01:18:50.943 に答える