вызов метода getActivity (). getSupportFragmentManager () может вызвать исключение нулевого указателя во фрагменте - PullRequest
0 голосов
/ 26 апреля 2018

"Вот мой код ниже и ссылка на изображение"

MyFragment newFragment = new MyFragment();


    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();

    ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
    ft.replace(R.id.guide_frame_container, newFragment)
            .addToBackStack(null)
            .commit();

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Это предупреждение Android Studio, без ошибок. Но вы должны заботиться об этом!

getActivity() гарантированно не всегда возвращает активность. Например, когда фрагмент создан, но еще не присоединен, то есть getActivity() будет ВСЕГДА возвращать ноль при вызове в конструкторе. То же самое для getSupportFragmentManager(), который также требует прикрепления фрейма для получения соответствующего хоста фрагмента.

Итак, вы должны убедиться, что вы либо вызываете эти функции только в хорошо известном контексте, где гарантированно прикреплен фрагмент (как в функции onAttached()), либо вы должны обернуть вызовы в нулевые проверки

Кроме того, абсолютно неясно, где вы вызываете эти функции. Я полагаю, вы пытаетесь вызвать те из функции static Fragment newInstance(), которая создаст фрагмент для вас. Тем не менее, вы никогда не должны пытаться прикрепить фрагмент там. Это должно быть сделано действием хоста.

0 голосов
/ 26 апреля 2018

Попробуйте этот код

MyFragment newFragment = new MyFragment();
getSupportFragmentManager().beginTransaction()
    .setCustomAnimations(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
    .replace(R.id.guide_frame_container, newFragment)
    .addToBackStack("MyFragment")
    .commit();
...