我在Activity中有一个模型,此Activity中的Fragment需要访问它。我目前正在通过Fragment包传递它,但为什么我不能从片段中的Activity访问它?
例如,我会在片段onCreate()中使用此代码:
Model model = ((ActivityWithModel) getActivity).getModel();
一般来说,为什么这总是不能成为Activity和Fragment共享对象的方法,或者Activity将参数传递给Fragment的方法?为什么需要Fragment包?
答案 0 :(得分:3)
因为可以从多个Fragments
访问Activities
。
答案 1 :(得分:3)
使用getActivity()使您的Fragment依赖于该特定的Activity类。如果您想在几个不相关的活动中重复使用相同的片段,您可能希望避免这种情况。您还可以更轻松地测试片段
然后getActivity()并不总是可用,它只能从Fragment的onActivityCreated()开始提供。有时你想先传递参数,比如片段的onCreate(),所以你必须使用Bundle