2

我在 Activity 中有一个模型,并且该 Activity 中的 Fragment 需要访问它。我目前正在通过 Fragment 包传递它,但为什么我不能从片段中的 Activity 访问它?

例如,我将在片段 onCreate() 中使用此代码:

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

一般来说,为什么不能总是Activity和Fragment共享对象的方法,或者Activity传递参数给Fragment的方法?为什么需要 Fragment 捆绑包?

4

2 回答 2

3

因为Fragments可以从多个Activities.

于 2015-10-26T20:41:02.780 回答
3

使用 getActivity() 使您的 Fragment 依赖于该特定的 Activity 类。如果您想在几个不相关的活动中重用相同的 Fragment,您可能希望避免这种情况。你也可以更容易地测试你的片段

那么 getActivity() 并不总是可用的,它只能从 Fragment 的 onActivityCreated() 开始可用。有时您想更早地传递参数,例如 Fragment 的 onCreate(),因此您必须为此使用 Bundle

于 2015-10-26T20:41:21.910 回答