2

アクティビティ内のリスト ビューにメッセージのフィードを実装しています。このアクティビティでは、メッセージへの返信ではなく、メッセージの「メイン スレッド」のみを示しています。メッセージをクリックすると、そのメッセージと返信を含む新しいウィンドウがポップアップ表示されます。

Web サーバーから JSONS をダウンロードした後、VO と呼ばれる複雑なオブジェクトに情報を保存します。つまり、ユーザーのすべての情報を保存する UserVO です。

このオブジェクトには、文字列、int、他の VO のリスト、メッセージ フィードのリストなどが含まれます。

私の考えは、このメッセージへの可能な返信を表示するために1つのメッセージがクリックされたときに、画面の上部に新しい FragmentDialog を開き、それに返信を送信できるようにすることです。

このためには、これらの VO オブジェクトをアクティビティとフラグメントの間で両方向に渡す必要があります。

  • アクティビティから DialogFragment へ: メッセージ フィードを含むオブジェクト。
  • フラグメントからアクティビティへ: ユーザーがテキストを書き、写真 (URL) を添付したら、オブジェクトをアクティビティに送り返す必要があります。

フラグメントとアクティビティに関するかなり多くの情報を読んでいますが、それでも私にとって使用可能なソリューションが見つかりません。Fragment を初期化するときにいくつかのオブジェクトを渡す必要がありますが、これは newInstance() メソッドを使用して行うことはできないようです。さらに、このメソッドを使用するには、使用しているすべての VO (複雑) をシリアル化可能にする必要があります。さらに、フラグメントからアクティビティにオブジェクト(再び複雑なVO)を渡す必要があります...これらの大きなオブジェクトを渡す方法はありますか? インターフェイスは、両方の方法で情報を渡すことができますか?

この問題の解決策を見つけることができず、ここで非常に積み重なっているので、助けていただければ幸いです (チュートリアルは素晴らしいでしょう)。

前もって感謝します!

4

3 に答える 3

2

オブジェクトをアクティビティのメンバーとして保存できます。そのためのセッターとゲッターを作成します。getActivity()を使用してフラグメントからアクティビティにアクセスし、アクティビティをYourActivityにキャストできます。

これが、フラグメントとアクティビティの間で情報を渡すための一般的な方向です。

于 2012-09-25T16:58:08.443 に答える
1

Givi が言及したのはそれを行う方法の 1 つですが、これを処理するためのより効率的で効率的な方法は、複数のアクティビティ内で Fragment を使用するシナリオなどでファクトリ パターンを使用することです。

フラグメントに初期データを与える適切な方法は?

すべてのアプローチを理解するには、セクションhttp://developer.android.com/guide/components/fragments.html#CommunicatingWithActivityを確認してください

  1. アクティビティへのイベント コールバックの作成
  2. ゲッターまたはセッター
  3. 工場方式

バンドルに渡された場合、複雑なオブジェクトの場合は、このPassing data between nonprimitive type between activities in android implementation Paracable でトリックを実行する必要があります。

于 2013-01-29T21:40:45.170 に答える