Android: передать экземпляр MainActivity во фрагмент - PullRequest
0 голосов
/ 16 января 2020

Мне нужен объект MainActivity как контекст в объекте Fragment.

  1. Передача MainActivity как 'this' в пользовательский конструктор класса Fragment работает только при запуске приложение. При вращении он вызывает стандартный конструктор с нулевым аргументом через super.onCreate(savedInstanceState);

  2. Создание нового экземпляра MainActivity во Fragment также не работает. Например:

    MainActivity ma = new MainActivity(); AdapterTasks at = new AdapterTasks(ma,title, subt, imgid);

-> Системные службы недоступны для Activity до onCreate ()

Как получить ссылку из Объект MainActivity к объекту Fragment ??

Ответы [ 3 ]

2 голосов
/ 16 января 2020

Если вы используете Java, вы можете просто позвонить getActivity()

Если вы используете Kotlin, вы также можете использовать requireActivity(), который возвращает ненулевое значение, где getActivity() возвращает значение NULL. , в результате чего у вас будет много нулевых проверок в вашем коде.

1 голос
/ 16 января 2020

В Fragment просто позвоните this.getContext().

Или когда вам нужно получить доступ к чему-либо в родительском MainActivity:

MainActivity activity = (MainActivity) this.getActivity();

Оба работают только тогда, когда Fragment подключен к Activity. Как правило, this.getContext() не позволяет добавлять слишком много кода в Activity, который, скорее, следует добавить в Fragment. В Fragment можно делать что угодно, позволяя Activity его раздувать.

0 голосов
/ 16 января 2020

Вам не нужно передавать MainActivity.

В вашем фрагменте используйте это:

activity = (MainActivity) getActivity();
...