将Initialized对象从activity传递给fragment

时间:2018-01-17 13:17:59

标签: android android-fragments android-activity

我有一个活动和一个片段,我想传递一个初始化的对象,它属于Network类,这里是对象初始化

ConnectivityManager connec = (ConnectivityManager)getSystemService(getBaseContext().CONNECTIVITY_SERVICE);

当我直接将这一行放入片段时,它会在getBaseContext和getSystemService上显示错误,那么如何将此对象从activity调用为片段

4 个答案:

答案 0 :(得分:0)

我建议只在Fragment中初始化它,不需要从Activity中传递它。从活动中传递此类项目的唯一方法是,如果它可以序列化或Parcelable,例如ConnectivityManager分别实现SerializableParcelable。由于您没有创建这些类并且它们是AndroidFramework的一部分,我不会认为它们是,除非您可以通过检查源代码来验证它。

尽管如此,要在片段中初始化它,请调用以下代码

ConnectivityManager connectivityManager = (ConnectivityManager)getContext()
             .getSystemService(Context.CONNECTIVITY_SERVICE);

答案 1 :(得分:0)

getSystemService()Context类中的一种方法。 Fragment Context继承,因此该方法不可用。您需要在对Activity(继承自Context)的引用上调用该方法,如下所示:

(ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);

答案 2 :(得分:0)

这是一个片段。所以你必须使用它的父活动的上下文。 在你的片段中这样做:

ConnectivityManager connec = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);

答案 3 :(得分:0)

Context传递给Fragment。像这样构建Fragment构造函数:

public class MyFragment extends Fragment {
Context context;
public MyFragment(Context context) {
   this.context = context;
}

并在Fragment中初始化Activity,如下所示:

MyFragment mFrag = new MyFragment(this);

然后在初始化ConnectivityManager和其他任何地方

时使用此上下文