2016-04-21 2 views
-2

Я использую библиотеки для сборки некоторых карт, мой java расширяет класс библиотеки. Теперь у меня есть требование использовать FragmentManager в моем классе java. Я пытался сделать это с использованием внутреннего класса, но получаю исключение из нулевого указателяКак получить диспетчер фрагментов без расширения активности

+2

вы можете просто принять его как внешнюю зависимость, как параметр либо к конструктору, либо к методу. – ootinii

ответ

0

Если у вас есть Activity ссылка: activity.getFragmentManager()

Если у вас есть Fragment ссылка: fragment.getFragmentManager()

Они оба public методы, но вам нужна ссылка либо деятельности или фрагмента.

Кроме того, и хотя я не рекомендую, если у вас есть View ссылки, метод view.getContext() будет вероятно быть Activity, так что вы можете быть в состоянии бросить и получить FragmentManager таким образом. Но это потенциально опасно и может перестать работать в любой момент, если изменения в Android изменяются, поэтому вы должны действительно знать, что делаете. Передача справки о действии/фрагменте действительно является способом выхода.

+0

Вставка кода ниже: public class CustomExpandCard расширяет CardExpand { Строка text1; public CustomExpandCard (контекст контекста, строка текста1, строка текста2, строка текста3, строка текста4) { супер (контекст, R.layout.carddemo_example_inner_expand); this.text1 = text1; } } Должен ли я создать внутренний класс и передать в него контекст. На самом деле я новичок в андроиде, могу сказать мне пример кода, это очень поможет –

0

getFragmentManager() является publicnon-static метод Activity. Поэтому, чтобы получить FragmentManager, вам необходимо иметь activity's context. Поэтому, даже если вы не продляете класс activity, вам необходимо иметь его context.

Также ознакомьтесь с описанием этого метода, он очистит все.

Возврат FragmentManager для взаимодействия с фрагментами, связанными с этим действием.

/** 
* Return the FragmentManager for interacting with fragments associated 
* with this activity. 
*/ 
public FragmentManager getFragmentManager() { 
    return mFragments.getFragmentManager(); 
} 

Так что без activity, FragmentManger не существует.

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