2017-01-30 14 views
0

viewPagerを使用して多数のフラグメントを返すアクティビティを持つ英語の教育用アプリケーションを作成しています。このアプリケーションには、viewPagerを使用して同じ断片を返す追加のアクティビティを使用するユニットが追加されます(一部の単語の変更や順序の変更はありません)。フラグメントを再利用する最良の方法は何ですか?フラグメントを別のアクティビティに実装するだけですか?もしそうなら、バックグラウンドの別のアクティビティですでに同じフラグメントが使用されている場合に、新しいアクティビティでフラグメントが実装されていると問題が発生する可能性はありますか?あるいは、フラグメントやレイアウトファイルを再利用できる別の方法がありますか?前もって感謝します。フラグメントまたはレイアウトファイルの再利用

+0

詳細をご記入ください。あなたは、2つのインスタンスならば何も問題はありません、また この(http://stackoverflow.com/questions/7951730/viewpager-and-fragments-whats-the-right-way-to-store-fragments-state)を読みたいかもしれませんは、バックスタックで利用可能です。それらはその目的のためだけに作られたものです。 –

答えて

0

再利用性はFragment Sを使用しての主な利点の1つですので、あなたは確かに試してみて、可能な限り、それらを再利用する必要があります。Androidのドキュメントから(https://developer.android.com/guide/components/fragments.html

You can (...) reuse a fragment in multiple activities

再利用するたびにAndroidは新しいFragmentのインスタンスを作成するので、既存のFragmentと衝突する危険はありません(間に共有される静的変数を使用しない限り)。

+0

ありがとう、それは私が知りたかったものです。私は今、私のアプリが私が後で問題に遭遇するつもりはないことを知っています – Ntwofive

1

はい、あなたは何回ものためのあなたのフラグメントと活動を再利用することができます。まず、あなたの活動は断片の容器でなければならず、活動に多くの責任を与えないようにしてください。 1つのBaseActivityを作成し、1つのレイアウト(たとえば相対レイアウト)をフラグメントコンテナとして配置し、ベースクラスから実装するすべてのアクティビティで、ベース置換フラグメントメソッドを呼び出すことができます。ここで

private void changeFragment(Fragment targetFragment){ 

    getSupportFragmentManager() 
     .beginTransaction() 
     .replace(R.id.main_fragment, targetFragment, "fragment") 
     .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE) 
     .commit(); 
} 

タグを取得するときに、あなたがそうよりよいこの部分抽象メソッドをやって。ということであるフラグメントを認識することができ、新たなフラグメントには、すべての異なるフラグメントのための「フラグメント」タグを変更する必要があります。

+0

ありがとうございます。これは私の質問にも答えます。私は間違いなく将来の参照のためにフラグメントを置き換える方法を念頭に置いています。申し訳ありませんが2つの答えを受け入れることはできません。 – Ntwofive

関連する問題