5

私は最終的に、サポート ライブラリ リビジョン 11 の新しいネストされたフラグメント API を調べています。

ネストされたフラグメントが保持するアクティビティ参照を使用しようとするまで、すべてうまく機能しました。構成の変更後、childFragmentが切り離されて新しいアクティビティに再接続されないようです。

基本的に、向きを変更した後、私のchildFragmentは一貫性のない状態になり、そこからgetActivity()で正しいアクティビティ インスタンスを取得できません。

getParentFragment() .getActivity()を使用して正しいものを取得することができましたが、それは機能しますが、それが正しい方法だとは思いません。

これは、初めてparentFragmentにフラグメントを追加するために使用するコードです。その後、フラグメントは自動的にparentFragmentに追加されます。

        public void addChildFragment() {
            Fragment f = getFragment().getChildFragmentManager().findFragmentByTag( FRAGMENT_CHILD_TAG );
            if (f == null) {
                FragmentTransaction ft = getFragment().getChildFragmentManager().beginTransaction();

                f = new TrackBrowserFragment();
                f.setArguments( getFragment().getArguments() );

                ft.add( R.id.fragment_album_detail_child_fragment_layout, f , FRAGMENT_CHILD_TAG );
                ft.commit();
            }
        }

アクティビティ インスタンスでのこの一貫性のなさは、明らかに私のフラグメントに複数の問題を引き起こします (サービスとのバインド、ブロードキャスト レシーバーなど)。これがネストされたフラグメントの正しい動作であるとは思わないため、おそらく何か間違ったことをしています。

それで:

コードに何か問題がありますか? これは、ネストされたフラグメントの予想される動作ですか?

何か不足していますか?自分で脱着する必要がありますか?

ありがとう

4

1 に答える 1

1

問題があることがわかりました。親フラグメントで setRetainInstance(true) を使用していたため、子フラグメントが切り離されたままになりました。

その行を削除した後、すべてが期待どおりに機能します

于 2014-07-15T15:18:14.390 に答える