1. ホーム
  2. android

ActivityからFragmentへのオブジェクトの受け渡し

2023-07-30 20:29:03

質問

私は Activity を使用しています。 Fragment . 私は単にこの Activity から Fragment .

どうすればいいのでしょうか? 今まで見たチュートリアルはすべて、リソースからデータを取得していました。

編集中です。

もうちょっと正確に言うと

私のアクティビティには ListView があります。これをクリックすると、その部分に Fragment を右の部分に読み込むというものです。

これを入力すると Activity と入力すると、オブジェクト CategoryIntent . このオブジェクトには、他のオブジェクトのリスト Questions (これはStringのリストを含む)。これらの Questions オブジェクトが ListView 上に表示されます。 の中から1つの項目をクリックすると ListView のリストを表示させたい。 String のリストを Fragment (に)。 ListView ).

そのために、私は setContentView() から、私の Activity をレイアウトで作成します。このレイアウトでは Fragment で、呼び出すべき正しいクラスが定義されています。 これを呼び出すと setContentView() を呼び出すと、その onCreateView()Fragment が呼び出されますが、このとき getArguments() はnullを返します。

の呼び出しの前に埋められるようにするにはどうしたらいいでしょうか? onCreateView() ? (私が十分に明確でないなら教えてください)

ありがとうございます。

どのように解決するのですか?

の中に静的メソッドを作成します。 Fragment で取得し getArguments() .

例です。

public class CommentsFragment extends Fragment {
  private static final String DESCRIBABLE_KEY = "describable_key";
  private Describable mDescribable;

  public static CommentsFragment newInstance(Describable describable) {
    CommentsFragment fragment = new CommentsFragment();
    Bundle bundle = new Bundle();
    bundle.putSerializable(DESCRIBABLE_KEY, describable);
    fragment.setArguments(bundle);

    return fragment;
  }

  @Override
  public View onCreateView(LayoutInflater inflater,
      ViewGroup container, Bundle savedInstanceState) {

    mDescribable = (Describable) getArguments().getSerializable(
        DESCRIBABLE_KEY);

    // The rest of your code
}

から呼び出すと、その後 Activity のようなことをしています。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment = CommentsFragment.newInstance(mDescribable);
ft.replace(R.id.comments_fragment, fragment);
ft.commit();