1

最初に要素のリストを含むフラグメントを表示するこのアクティビティがあります。これは、次のコードで完全に機能します。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_act);

    if(null == savedInstanceState)
    {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        ListFragment glfragment = new ListFragment();
        fragmentTransaction.add(R.id.listfrag1, glfragment);
        fragmentTransaction.commit();
    }

}

とがListFragmentありDetailFragmentます。しかし、リストの要素をクリックしたときにトランジションを行う方法がわかりません。は知ってfragmentTransaction.replace()いますが、いつ呼び出すかはわかりません。

OnListItemClick()の内部を使用する必要があると思いましたが、メインのアクティビティではなくフラグメントListFragmentの内部を使用する方法がわかりません...また、データをインテントであるかFragmentManagerのように「エクスポート」したいのですが、DetailFragmentそうではありません。

4

2 に答える 2

2

Fragment 内で Fragment Manager を使用するには、 getActivity().getFragmentManager()代わりにgetFragmentManager(). これを実装するOnItemClickListenerだけで十分です。

于 2014-01-28T11:15:26.613 に答える
1

私がすることは次のとおりです。

  • listItemSelected()選択した項目の ID を引数として1 つのメソッドでインターフェイスを定義します
  • アクティビティにこのインターフェースを実装させます
  • onAttachリスト フラグメントの で、アクティビティを取得し、それをメンバー変数として保持し、インターフェイス タイプにキャストします。onDetachあなたがそれを逆参照していることを確認してください。
  • onListItemClickで、アクティビティでこのメソッドを呼び出します
  • アクティビティで、新しいフラグメントトランザクションを実行できるようになりました。今回は、フラグメントを追加する代わりに置き換える必要があります
  • 正しい引数 (id) を使用して詳細フラグメントを作成するには、こちらで説明されている方法を使用します。

通常はこれで問題なく動作するはずです。

于 2014-01-28T11:01:19.133 に答える