Почему onAttach () необходим для связи между действием и фрагментом? - PullRequest
0 голосов
/ 19 сентября 2018

Почему метод onAttach() необходим для связи между действием и фрагментом, например для кода ниже: -

public class SimpleFragment extends Fragment {

Fragmentinterface interf;

public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof Fragmentinterface) {
        interf = (Fragmentinterface) context;
    } else {
        throw new ClassCastException("exception message");
    }
}

Почему interf = (Fragmentinterface) context; приведение действия к интерфейсу необходимо?Почему не так просто, что Mainactivity реализует интерфейс и вызывает интерфейсный метод с телом метода, и этот метод также вызывается во фрагменте со ссылкой на интерфейс для связи между активностью и фрагментом?

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

1 Ответ

0 голосов
/ 19 сентября 2018

Why interf = (Fragmentinterface) context;необходимо преобразование активности в ссылку на интерфейс?

Поскольку мы хотим получить доступ только к методу определенного интерфейса, а не ко всем методам MainActivity

Почему это не так?настолько просто, что Mainactivity реализует интерфейс и вызывает интерфейсный метод с телом метода

interf равным null, сначала нам нужно его инициализировать, и здесь мы хотим передать данные в действие, а часто данные идут дальшеиспользуется другими методами действия, хотя вы можете использовать лямбда-выражения, анонимные классы в качестве параметра, но это должно быть сделано в рамках действия, Scope определяет границы, и один из способов общения - это открытые методы.

Примечание: вы можетевыполните приведение позже в других методах жизненного цикла, когда контекст будет готов к использованию, хотя onAttach является первым местом, где используется context.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...