我有一个活动和一个片段,我想传递一个初始化的对象,它属于Network类,这里是对象初始化
ConnectivityManager connec = (ConnectivityManager)getSystemService(getBaseContext().CONNECTIVITY_SERVICE);
当我直接将这一行放入片段时,它会在getBaseContext和getSystemService上显示错误,那么如何将此对象从activity调用为片段
答案 0 :(得分:0)
我建议只在Fragment中初始化它,不需要从Activity中传递它。从活动中传递此类项目的唯一方法是,如果它可以序列化或Parcelable
,例如ConnectivityManager
分别实现Serializable
或Parcelable
。由于您没有创建这些类并且它们是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
和其他任何地方