Почему public переменную не видно в другом классе? У меня есть класс MainActivity и я делал в нем внутренний класс, чтобы использовать AsyncTask. Я решил раскидать эти классы в разные пакеты. Но после этого в классе для AsyncTask перестало видеть мои переменные, хотя они глобальные и public. Ну к примеру:
В классе MainActivity у меня есть поле перед всеми методамиpublic boolean isNavigationDrawerItemEnabled = false;
В моем AsyncTask в другом пакете здесь эту переменную уже никак не видит@Override
protected void onPreExecute() {
super.onPreExecute();
if (!isNavigationDrawerItemEnabled) {
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("Новые");
progressDialog.setMessage("Загрузка...");
progressDialog.setIndeterminate(false);
progressDialog.show();
}
}
Вроде бы банальщина, но я почему-то затупил. Можете подсказать?

21 Авг 2019 в 07:05
219 +1
0
Ответы
1

В Java модификатор доступа public позволяет видеть переменные вне класса, но только если они находятся в том же пакете. Если вы переместили ваш AsyncTask в другой пакет, то доступ к переменной isNavigationDrawerItemEnabled у вас не будет из-за того, что она не находится в том же пакете.

Для того чтобы решить эту проблему, вам нужно либо переместить ваш AsyncTask обратно в тот же пакет, где находится класс MainActivity, либо изменить модификатор доступа переменной на protected или default (без явного указания модификатора доступа). В этом случае переменная будет доступна из подклассов в других пакетах.

Например, если вы измените модификатор доступа на protected:protected boolean isNavigationDrawerItemEnabled = false;
то ваш AsyncTask сможет обратиться к переменной isNavigationDrawerItemEnabled из другого пакета.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир