【问题标题】:passing Initialized object from activity to fragment将初始化对象从活动传递到片段
【发布时间】:2018-01-17 13:17:59
【问题描述】:

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

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

当我直接将这一行放在片段中时,它会在 getBaseContext 和 getSystemService 上显示错误,所以我应该如何将此对象从活动调用到片段

【问题讨论】:

  • 您的问题不清楚。请添加更多代码并准确解释您想要的内容。你想在Activity中初始化这个对象,然后传递给Fragment吗?还是要在 Fragment 中初始化?
  • 你的两个选项都很棒,你的第一个选项很好,第二个选项更好
  • 嘿,我想要这个对象在我的片段上,当我在我的活动中编写此代码时它会很好,但是如果我在我的片段中写入,则会发生错误,说无法解析方法

标签: android android-fragments android-activity


【解决方案1】:

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

不过,要在 Fragment 中对其进行初始化,请调用以下代码

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        将您的Context 传递给您的Fragment。像这样制作Fragment 构造函数:

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

        然后在Activity 中初始化你的Fragment 像这样:

        MyFragment mFrag = new MyFragment(this);
        

        然后在初始化ConnectivityManager 和其他任何地方时使用此上下文

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多