2014-01-14 1 views
0

У меня есть подобный квест, как на эту тему: JAVA cannot make a static reference to non-static fieldВременного решения для создания объекта для использования в фрагменте

Я понимаю проблему решения для создания экземпляра класса в работе с ним. Проблема заключается в том, что через API, который я использую, мне не разрешено создавать второй экземпляр.

Есть ли возможность использовать объект, который уже создан в MainActivity, в моем Fragment?

Я уже пробовал с геттер, но затем я получаю Cannot make a static reference to the non-static method

Пытаясь объяснить проблему более детально.

В моей MainActivity я создаю объект в APIclass через object = API.createAPI_Object(); (я вынужден сделать это таким образом, вызвать конструктор API является частным)

Из

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

я могу создайте только один экземпляр объекта.

, но теперь мне нужно использовать этот экземпляр объекта в моем Fragment.class, и я не знаю, как, потому что я не могу создать новый, и я не могу использовать один из MainActivity (по крайней мере, я не знаю, как)

+0

вставить код брата ??? –

+0

привет, вы создаете свой класс командой newInstance? Если это так, вы должны поместить этот класс в список. После того, как вы сможете получить существующий класс, и вы можете делать с ним все, что хотите. – alicanbatur

+0

((MainActivity) getActivity()). GetInstanceYouWant() и используйте его в своем фрагменте –

ответ

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(); 
    } 
} 
+0

очень приятно :) thx – Fraggles

+0

@ Поделюсь другим способом было бы создать Менеджер для этих объектов как Singleton, просто чтобы дать вам немного больше ввода –

+0

Может быть, еще один вариант, но на данный момент ваш метод работы с ним работает :) – Fraggles

0

Не уверен, что вы просите четко, но я думаю, это:

Когда я обычно приходят через эту проблему, я установить переменную

private static Context mContext; 

, а затем в моем onCreate() методе (в мой фрагмент), я установил mContext = getActivity(), а затем каждый раз в статическом методе вместо использования getActivity(), который я не могу использовать mContext.

Если вы хотите выслать свой код и разъяснить причину проблемы, это будет замечательно.

+0

Я попытаюсь объяснить это выше в моей теме. Из-за правил моей компании мне не разрешено публиковать весь код :( – Fraggles

0

Ну, это значит предотвратить использование объекта, который не может быть создан. Если он создан в FragmentActivity, и вы не хотите ссылаться на объект в своем фрагменте, то, как говорится в описании, вам нужно сделать статическую ссылку. Вы можете установить свой объект в статике MainFragment и получить его с именем класса, например MainActivity.object.

Смежные вопросы