Трудно сказать, почему getActivity()
является нулевым, поскольку мы не знаем, где вы вызываете свой метод.
Вы должны знать, что getActivity()
равно нулю до onAttach()
и после onDestroy()
, если вы вызываете свой метод между этими двумя методами, вы должны быть хорошими.
Что я могу сделать, чтобы предотвратить использование getActivity (). GetSuppotFragmentManaget равным нулю?
Жестоко отвечая на ваш вопрос. Когда вы используете getActivity()
в своем коде, хорошей практикой является его приведение, чтобы убедиться, что оно не равно нулю (если вы не уверены, что оно не равно нулю). В вашем коде это будет так.
// Use the current date as the default date in the picker
if (getActivity != null){
new datePickerFragment().show(Objects.requireNonNull(
getActivity()).getSupportFragmentManager(), "datePicker");
}
Используя их, вы не будете иметь проблемы getActivity.getSupportFragmentManager()
, будучи нулевым. BUTT , это потому, что эта часть вашего кода больше не будет работать. Он увидит, что getActivity()
равен нулю, и не будет следовать коду.
С этого момента ваше приложение больше не будет зависать, однако вы не увидите диалоговое окно. Теперь вам нужно предотвратить сброс значения getActivity()
на ноль. Для этого я рекомендую вам.
- Проверьте, где вы вызываете свой метод;
- Попробуйте вызвать ваш метод из разных мест;
- Убедитесь, что ваша деятельность / фрагмент находится внутри
onAttach()
и onDestroy()
метода, когда вы используете getActivity()
.