2012-07-03 10 views
9

私はWindows MobileからAndroidにアプリケーションを移植する作業をしていますが、少し問題があります。既存のアプリケーションはMVPパターンを使用し、ポートで再利用される別個の "プレゼンター"クラスを持っています(これは広範なアプリケーションであり、再作成は不可能であり、C#コードはすべてAndroid用モノを使用して再利用されています) )。これらは、インタフェースを実装するビューを取ります。これは、適切なインタフェースを実装するアクティビティを作成し、プレゼンタをインスタンス化し、引数として渡すことによって達成されたアンドロイドで実現しました。これはすべて、私たちの目的のためにうまくいくか、アイスクリームのサンドウィッチが出てきて、断片を使って実装しようとしていました。モデルビューのプレゼンターパターンをフラグメントタブでAndroidに適用

いくつかのアクティビティはタブを利用していますが、アクションバーやその他の新機能を使用するために、タブ付きアクティビティをビューページでタブ付きフラグメントに変換しようとしています。いくつかの問題。私が各タブを実装しているものを断片化したものが好ましい方法だと思われますが、プレゼンターがどのようにしてその断片化したものと通信できるかについて混乱しています。現時点では、プレゼンターはアクティビティのインターフェースメソッドを呼び出してスピナー、テキストビューなどに直接アクセスし、必要に応じて値を取得して設定します。これらのUIエレメントのそれぞれがアクティビティで宣言されるため、これは簡単です。しかし、これらすべての要素をフラグメントに移動すると、各アクティビティとフラグメントの間に全く新しいインターフェイスを実装せずにアクセスすることはできません。私は、フラグメントルート内のビューを取得し、その中に必要なビューを見つけることによって、フラグメント内の要素への参照を生成しようとしましたが、viewpagerはフラグメントをロードするとは限りません。それらがロードされていても、アクティビティが実行中の状態になるまで、レイアウトは膨らんでいないので、常にnull値が返されます。

これはちょっと変わった質問ですが、私の発表者クラスがui要素とやりとりして別のフラグメントタブに格納できるようにするにはどうすればよいですか?私は完全に間違った方法でそれを行う必要がありますように感じるが、私はそれがどのように行われるべきかを見ることができないので、誰かが私がそれについて行く方法についていくつかのアドバイスを提供できるなら、それは素晴らしいだろう。

+0

同じジレンマを持つため、RecyclerViewとViewPagerのカスタムアイテムでMVPを使用すると、@ssの作業に苦労します –

答えて

1

FragmentAcivity内のすべてのFragmentに対して1つのプレゼンターを作成し、この単一のプレゼンターに各Fragment(別名タブ)用のインターフェースを実装させる方法について説明します。次に、プレゼンターがすべてのフラグメントへの参照を持つ、FragmentActivityのインスタンスからこのプレゼンターをインスタンス化します。