2

アクティビティ内にモデルがあり、このアクティビティ内のフラグメントがそれにアクセスする必要があります。現在、Fragment バンドルを介して渡していますが、フラグメント内のアクティビティからアクセスできないのはなぜですか?

たとえば、フラグメント onCreate() 内で次のコードを使用します。

Model model = ((ActivityWithModel) getActivity).getModel();

一般に、アクティビティとフラグメントがオブジェクトを共有する方法、またはアクティビティがパラメーターをフラグメントに渡す方法を常にこれにできないのはなぜですか? なぜ Fragment バンドルが必要なのですか?

4

2 に答える 2

3

getActivity() を使用すると、 Fragment がその特定の Activity クラスに依存するようになります。いくつかの無関係なアクティビティで同じ Fragment を再利用したい場合は、それを避けたいと思うかもしれません。また、フラグメントを簡単にテストできます

その場合、getActivity() は常に使用できるわけではなく、Fragment の onActivityCreated() からのみ使用できます。Fragment の onCreate() など、以前にパラメータを渡したい場合があるため、そのために Bundle を使用する必要があります

于 2015-10-26T20:41:21.910 に答える
3

複数からFragmentsアクセスできるからActivitiesです。

于 2015-10-26T20:41:02.780 に答える