回答編集履歴

2

追加修正

2023/01/08 02:00

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -3,6 +3,6 @@
3
3
  ボタンの押下のイベントハンドラはボタンのあるフラグメントに書くしかありません。
4
4
  ですがボタンの"機能"はアクティビティに属するようですので、"機能のイベントハンドラ"はアクティビティに書くほうが良いでしょう。
5
5
  従って、フラグメントのイベントハンドラからアクティビティのイベントハンドラを呼ぶ形になると思います。
6
- java ではフラグメントからアクティビティへ処理を移すものとして、 ViewModel で LiveData を使ったり FragmentManager で FragmentResult を使う方法がありますし、より直接的に、ツリーにフラグメントが組み込まれたタイミング(onAttach)で上位コンポーネント(アクティビティや別フラグメント)が必要なインターフェースを持っていればそれを覚えておいて、必要時に上位コンポーネントを呼び出す、あるいは本当に直に getActivity してメソッドを呼ぶなんて方法も使われます。
6
+ java ではフラグメントからアクティビティへ処理を移すものとして、 ViewModel で LiveData を使ったり FragmentManager で FragmentResult を使う方法がありますし、より直接的に、ツリーにフラグメントが組み込まれたタイミング(onAttach)で上位コンポーネント(アクティビティや別フラグメント)が必要なインターフェースを持っていればそれを覚えておいて、必要時に上位コンポーネントを呼び出す、あるいは本当に直に getActivity してインターフェースにキャストしてメソッドを呼ぶなんて方法も使われます。
7
7
 
8
8
  ついで的ですが、このようにイベントをどう処理するかによってハンドラをどのように何処に書くかが変わってきますので、一概に何処に書くかは決まりません。

1

追加

2023/01/07 19:36

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -3,6 +3,6 @@
3
3
  ボタンの押下のイベントハンドラはボタンのあるフラグメントに書くしかありません。
4
4
  ですがボタンの"機能"はアクティビティに属するようですので、"機能のイベントハンドラ"はアクティビティに書くほうが良いでしょう。
5
5
  従って、フラグメントのイベントハンドラからアクティビティのイベントハンドラを呼ぶ形になると思います。
6
- java ではフラグメントからアクティビティへ処理を移すものとして、 ViewModel で LiveData を使ったり FragmentManager で FragmentResult を使う方法がありますし、より直接的に、ツリーにフラグメントが組み込まれたタイミング(onAttach)で上位コンポーネント(アクティビティや別フラグメント)が必要なインターフェースを持っていればそれを覚えておいて、必要時に上位コンポーネントを呼び出す方法も使われます。
6
+ java ではフラグメントからアクティビティへ処理を移すものとして、 ViewModel で LiveData を使ったり FragmentManager で FragmentResult を使う方法がありますし、より直接的に、ツリーにフラグメントが組み込まれたタイミング(onAttach)で上位コンポーネント(アクティビティや別フラグメント)が必要なインターフェースを持っていればそれを覚えておいて、必要時に上位コンポーネントを呼び出す、あるいは本当に直に getActivity してメソッドを呼ぶなんて方法も使われます。
7
7
 
8
8
  ついで的ですが、このようにイベントをどう処理するかによってハンドラをどのように何処に書くかが変わってきますので、一概に何処に書くかは決まりません。