私は3つのボタンを持つフラグメントを持っており、少なくとも3つのアクティビティでそれを再利用したいと考えていますが、それらのボタンがそれぞれのアクティビティに対して異なることを望みます。たとえば、ActivityAでは、ActivityBにいる間にbutton1にGoogle Mapsを開き、button1には音楽プレーヤーが表示されます。これは可能でしょうか、それとも正しい方法ですか?複数のアクティビティで異なる機能を持つフラグメントを再利用できますか?
答えて
three_buttons.xml
three_buttons.xmlすることができますと呼ばれる部分的なレイアウトを作成します。 。例えば、FragmentCallback
と言う、目的のコールバックメソッド、onButtonClick()
を使って、フラグメントのインタフェースを作成するだけです。フラグメントのonAttached()
で、アクティビティを新しいインターフェイスにキャストし、変数private FragmentCallback callback;
に保存します。このフラグメントを使用する各アクティビティは、このコールバックインタフェースを実装する必要があります。次に、フラグメントonButtonClick()
メソッドのコールバックonButtonClick()
メソッドを呼び出します。そうです、それは非常に一般的なパターンです。
これは可能ですか?
です。あなたは自分のFragment
インスタンスをホストしているActivity
チェックすることができ:
private void button1OnClick(){
/* could also use instanceof, BUT: if you have something like ActivityC extends ActivityA
then instanceof would evaluate to true for both */
if(getActivity().getClass().equals(ActivityA.class)) {
// do stuff
} else if(getActivity().getClass().equals(ActivityB.class)) {
// do another stuff
}
}
は、これは正しい方法ですか?
(注意独断答え) それは依存します。複雑でユニークなレイアウト/機能をお持ちの場合は、別のFragments
を使用します。 Activities
で別々に動作する必要のあるボタンを備えた単純なレイアウトの場合は、既存のFragment
クラスを再利用することをお勧めします。
ありがとうございました!私もこの方法で試してみました。 – Alexis
はい、可能ですが、フラグメントにさらにロジックを追加し、各アクティビティにいくつかのインターフェイスを追加する必要があります。 私はそれをすることをお勧めしません、おそらくあなたのレイアウトを再利用することができます。
はい、できます。
if(getActivity() instanceOf ActivityA) {
//do stuff related to ActivityA
} else if(getActivity() instanceOf ActivityB) {
//do stuff related to ActivityB
}
あなたの活動は異なるロジックを持って、あなたはそれらのそれぞれのボタンロジックを定義し、このように意見を共有することができます。これを行うにはフラグメントを使用できますが、部分的なレイアウトを共有することで、より直接的にすることができます。
あなたはもちろん
<LinearLayout>
<BUtton android:text="button 1"/>
<BUtton android:text="button 2"/>
<BUtton android:text="button 3"/>
</LinearLayout>
activity_a.xml
<LinearLayout>
<TextView android:text="I am A"/>
<include
android:id="@+id/three_buttons"
layout="@layout/three_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
activity_b.xml
<LinearLayout>
<TextView android:text="I am B"/>
<include
android:id="@+id/three_buttons"
layout="@layout/three_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
- 1. 複数の機能と再利用不可能なコンポーネントを持つDrupal
- 2. 複数のフラグメントを持つアクティビティのMVP
- 3. 複数のフラグメントを持つ単一アクティビティでonOptionsItemSelectedを使用する方法
- 4. 複数のアクティビティ、1つのアクティビティ、複数のフラグメントを持つアプリを開発しますか?
- 5. 再利用可能なアクティビティに戻る
- 6. CQLinqコードを複数のクエリで再利用できますか?
- 7. vue.js 2 2つの異なる親変数を持つコンポーネントの再利用
- 8. Androidで複数のアクティビティのビューを再利用
- 9. 継承/再利用機能/複数の親からのプロパティ
- 10. 複数のタブページでコントロール(つまりテキストボックス)を再利用する
- 11. 異なるビューに再利用できる1つのSpringコントローラ
- 12. Google AdWordsで再利用可能な機能を作成する
- 13. どのように異なるcss aem 6を持つコンポーネントを再利用できますか?
- 14. 複雑なHTMLフラグメントを再利用する最良の方法
- 15. 同じ機能を持つ2つのメソッドがPythonのスレッドモジュールで利用できるのはなぜですか?
- 16. 再利用フラグメント
- 17. 複合クラスの再利用可能な匿名ランキング機能
- 18. 異なる視点のフラグメントの再利用
- 19. 異なる数の機能を持つデータを処理する
- 20. 大規模な再利用可能な機能のための関数のパラメータを持つthis.evaluate
- 21. Javascriptの機能を再利用する
- 22. 異なる価格モデルでプランIDを複数回再利用する
- 23. 2つの異なるレイアウトでAndroid Listviewのビューを再利用
- 24. 異なる機能を持つマルチプロセスプール
- 25. 異なる必要なプロパティを持つモデルを再利用する
- 26. Redux-sagaは、複数のアクションを再利用可能なジェネレータでディスパッチします。
- 27. angularjsの再利用機能
- 28. コードを再利用して複数のアクティビティにまたがってFrameLayoutでアクティビティを拡張する
- 29. 複数のアクティビティではなく、複数のフラグメントをアンドロイドアプリで使用することは賢明ですか?
- 30. 複数のTabItemでデータグリッドを再利用
ありがとうございます!それは働いた。 – Alexis