Android 创建要在片段中使用的对象的变通方法

Android 创建要在片段中使用的对象的变通方法,android,fragment,instance,Android,Fragment,Instance,在这个话题上,我也有类似的追求: 我理解创建类实例并使用它来解决问题。 问题是,通过我使用的API,我不允许创建第二个实例 是否可以在我的片段中使用已在main活动中创建的对象 我已经尝试使用getter,但是我得到无法对非静态方法进行静态引用 试图更详细地解释这个问题 在我的MainActivity中,我正在通过object=API.createAPI_object()创建一个APIclass的对象(我被迫这样做,因为API构造函数是私有的) 因为 public static synchron

在这个话题上,我也有类似的追求:

我理解创建类实例并使用它来解决问题。 问题是,通过我使用的API,我不允许创建第二个实例

是否可以在我的
片段中使用已在
main活动
中创建的对象

我已经尝试使用getter,但是我得到
无法对非静态方法进行静态引用

试图更详细地解释这个问题

在我的
MainActivity
中,我正在通过
object=API.createAPI_object()创建一个APIclass的对象(我被迫这样做,因为API构造函数是私有的)

因为

public static synchronized API createAPI_Object()
  {
    if (numberOfObject == 0)
    {
      numberOfObject++;
    return new API();
  }
    else
  {
    return null;
  }
} 
我只能创建该对象的一个实例


但是现在我需要在我的
Fragment.class
中使用对象的这个实例,我不知道如何使用,因为我无法创建一个新的实例,并且我不能使用
main活动的实例(至少我不知道如何使用)

不清楚你在问什么,但我猜是这样的:

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

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


如果您可以发布代码并进一步解释您的问题,那将非常好。

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

以下是我如何在片段中处理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();
   }
}

粘贴你的代码兄弟???嗨,你是用newInstance命令创建类的吗?如果是这样,您应该将该类放入列表中。在您可以获取现有类并对其执行所需操作后。((MainActivity)getActivity()).getInstanceYouWant()并在片段中使用它。Hi Fragments请参见下面的答案。这解决了我的问题:)我将尝试在我的主题中对其进行解释。由于我的公司规定,我不允许发布所有代码:(@Fraggles另一种方法是为这些对象创建一个管理器作为Singleton,只是为了给您多一点输入可能是另一种选择,但目前您处理它的方法是有效的:)