创建要在片段中使用的对象的解决方法

时间:2014-01-14 07:16:04

标签: android fragment instance

我对此主题有类似的追求:JAVA cannot make a static reference to non-static field

我理解解决问题的方法是创建一个类的实例和它的工作。 问题是,通过我正在使用的API,我不允许创建第二个实例。

是否有可能在我的MainActivity中使用已在Fragment中创建的对象?

我已经尝试过使用getter,但后来我得到了Cannot make a static reference to the non-static method

尝试更详细地解释问题。

在我的MainActivity我通过object = API.createAPI_Object();创建了一个API类的对象(我不得不这样做,因为API构造函数是私有的)

因为

public static synchronized API createAPI_Object()
  {
    if (numberOfObject == 0)
    {
      numberOfObject++;
    return new API();
  }
    else
  {
    return null;
  }
} 

我只能创建一个对象实例。

但是现在我需要在我的Fragment.class中使用该对象的这个实例,我不知道如何,因为我无法创建一个新的,我不能使用MainActivity中的一个(至少我不知道怎么样)

3 个答案:

答案 0 :(得分:1)

以下是我在片段中处理mainActivity中对象的方法:

class MainActivity extends FragmentActivity{

   MyObject mObject;

   onCreate(){
       mObject = new MyObject();
   }       

   public MyObject getMyObject(){
     return mObject;
   }
}



class MyFragment extends Fragment{

   onCreateView(){
       MyObject o = ((MainActivity)getActivity()).getMyObject();
   }
}

答案 1 :(得分:0)

不确定你要问的是什么,但我的猜测是这样的:

当我遇到这个问题时,我设置了一个变量

private static Context mContext;

然后在我的onCreate()方法(在我的片段中)中设置mContext = getActivity(),然后每次都使用静态方法,而不是使用getActivity(),我不能使用mContext。

如果您可以发布代码并进一步解释您的问题,那就太棒了。

答案 2 :(得分:0)

那就是防止使用可能没有创建的对象。如果它是在FragmentActivity中创建的,并且您不想将其引用到片段中的对象,那么如描述所示,您需要创建静态引用。您可以在MainFragment静态中设置对象,并使用类名称(如MainActivity.object)来访问它。