14

アクションバーとフラグメントを使用してタブインターフェイスを構築しています。コンテナアクティビティからフラグメントにデータを送信する際に支援が必要になります。

詳述すると、コンテナアクティビティにジョブオブジェクトがあります。また、ジョブオブジェクトの情報(会社の詳細、経験の詳細など)に基づいていくつかのタブを作成しました。それぞれの情報を表示できるように、これらのフラグメントにジョブオブジェクトを渡す必要があります。

コンテナアクティビティとタブフラグメントを作成しました。オブジェクトをそれらに渡す方法の例が必要になります。intent.putExtraを使用できません。フラグメントから親コンテナのオブジェクトにアクセスできますか?

どんな助けでもありがたいです。

ありがとう。

4

2 に答える 2

50

アクティビティでメソッドを作成します。たとえば、オブジェクトとその情報getJobを返します。Job

MyActivity extends Activity{
Job mJob;

public Job getJob(){
   return this.mJob;
 }
}

次に、フラグメントでこれを行います。

MyFragment extends Fragment{

@Override
public void onActivityCreated(){
  super.onActivityCreated();
  ((MyActivity)this.getActivity()).getJob();
 }
}

getActivityとメソッドを使用しgetJob();てオブジェクトを取得します

于 2012-12-07T08:41:15.703 に答える
2

これを達成する方法は複数あります。

  1. staticデータを保持し、フラグメント内からそのデータにアクセスするための変数を作成します。これは最も高速ですが、不適切に使用するとデザインパターンが悪くなります。
  2. の方法はFragment-to-Fragment communication possible through the parent Activityここに掲載されています:http ://developer.android.com/training/basics/fragments/communicating.htmlサンプルコードを使用して、を実行できますActivity - Fragment data send
  3. ここで最も投票された回答:親アクティビティのインスタンスにアクセスしますか?(1.)に言及a way to avoid using static dataし、を使用したソースコードの例が含まれていますActivityGroup

「最初のアクティビティに静的な参照を作成せずにいくつかの値にアクセスする必要がある場合は、アクティビティをActivityGroupに入れることを検討できます。」

あなたが選ぶのはあなたの好みです、これらはほんのいくつかのオプションです!


編集:私はそれに類似した方法をテストしていないので、番号3がフラグメントで機能するかどうかはわかりません。例は、アクティビティ-アクティビティ通信です。

于 2012-12-07T08:48:52.413 に答える