0

こんにちは。対応するフラグメント と を含む 3 つのアクティビティがAありBますC。フラグメントAは静的フラグメントで、他のフラグメントは動的です。

アクティビティAは既に fragment のリスナーを実装していますA。これは、フラグメントを横方向にロードするBか、単一ペインで新しい画面に移動するために使用されます。

私が欲しいのは、 FragmentBを呼び出すフラグメントで特定のボタンが押されたときです。横向きのCフラグメントに置き換えられるか(フラグメントは引き続き存在します)、シングルペインモードで新しい画面が表示されます。アクティビティ Bメソッドにこの単純なコードがあります。CAonCreate

if (getResources().getConfiguration().orientation == 
            Configuration.ORIENTATION_LANDSCAPE) {
        finish();
        return;
    }

眉をひそめているので、フラグメントからフラグメントへの通信を避けようとしています。これは、アクティビティと の両方でフラグメントのリスナーを実装する必要があることを意味Bしますか? より良い方法はありますか?リスナーをアクティビティに実装し、横向きのときにアクティビティに渡すことだけを考えましたが、上記のコードのために渡す前に終了したと思います。何かご意見は?ABACBBA

4

1 に答える 1

1

...つまり、アクティビティ A と B の両方でフラグメント B のリスナーを実装するということですか? アクティビティ B でのみリスナーを実装し、横向きのときにアクティビティ A に渡すことを考えましたが、上記のコードのために渡す前に終了したと思います。

アクティビティはフラグメントを横向きに表示できる必要があるBため、アクティビティだけにリスナーを実装することはできません。コードの重複が心配な場合は、フラグメントを表示するコールバックを実装する基本アクティビティを実装し、2 つのアクティビティをその基本クラスから拡張することができます。ACC

これらのフラグメントをどのように管理するかについて実際のコードを投稿していないので、縦向き (Bフラグメントを表示しているアクティビティ内B) にいる場合、クリックする (または何をするにしても) フラグメントをCこれに置き換えることに注意してください。A方向を横向きに切り替えると、アクティビティに運ばれません。

于 2012-07-28T18:50:52.443 に答える