Случайно я наткнулся на эту уникальную находку. Мой код сломался, потому что я получал NullPointerException
на моем адаптере после реализации LoaderManager, если раньше у меня не было исключения.Почему ListView.setAdapter (null) исключает исключение нулевого указателя?
Итак, я взял отладчик и шагнул через мой OnCreate метод:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
// Irrelevant code removed
mDrawerListView.setAdapter(mAccountAdapter);
return mDrawerListView;
}
нерелевантные код просто включать добавление вид колонтитулов и установка onClickListeners, но ни разу в этом методе (или любой другой) я назначить что-то до mAccountAdapter
. Я знаю, что должен, и я собираюсь, но я сделал ошибку, забыв это сделать.
Когда я использую отладчик и устанавливаю точку останова в строке setAdapter(mAccountAdapter)
, я вижу, что mAccountAdapter
имеет значение null. Тем не менее, я могу перешагнуть через него и двигаться дальше, не получая исключение нулевого указателя. Почему мне разрешено передавать нулевое значение в эту функцию?
Я сделал несколько шагов, но ничего не понял. Возможно, я должен занять некоторое время и пойти немного медленнее. Я понятия не имел, что это началось с нулевого адаптера, и, зная это, это имеет смысл. – AdamMc331