1

アプリにフラグメントを実装しています。このドキュメントを参照すると、アクティビティメソッドにアクセスするために使用する必要があると書かれてgetActivity()いますが、(次の段落で)フラグメントでインターフェイスを宣言し、アクティビティに実装させる必要があります。現在、2番目の方法はイベントなどのコールバックメソッドに使用されていますが、使用することもできgetActivity().onSomeEventHappened()ますね。

誰かが私に違いを説明してもらえますか?それらの違いが見えないからです。

4

2 に答える 2

2

getActivity()が常に期待するアクティビティのタイプを返すことがわかっている場合、最終結果に違いはありません。

ただし、インターフェイスを使用すると、フラグメントがアクティビティの特定の実装から切り離されるため、適切な方法です。したがって、後で別のアクティビティでフラグメントを使用することにした場合は、そのアクティビティにフラグメントインターフェイスを実装させて、フラグメントイベントのアラートを受け取るだけです。

副作用のない拡張が容易なアプリケーションが必要な場合は、常にコンポーネントを分離するように努める必要があります。

于 2012-12-16T03:38:47.000 に答える
1

必ずしも単純に呼び出すことはできませんgetActivity().onSomeEventHappened()。この場合を想像してみてください。2つのフラグメントがあります。1つはListViewを持ち、もう1つは選択されたlistItemに基づいて画像を表示します。2番目のフラグメントでは、アクティビティにそのようなメソッドがないため、単に呼び出すことはできませんgetActivity().onListItemClicked()が、アクティビティがインターフェイスを実装し、最初のフラグメントからそれらのイベントをキャッチする場合、イベントに関する情報を2番目のフラグメントに渡すことができます。

于 2012-12-14T12:56:50.407 に答える