Почему 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(); } } Вроде бы банальщина, но я почему-то затупил. Можете подсказать?
В Java модификатор доступа public позволяет видеть переменные вне класса, но только если они находятся в том же пакете. Если вы переместили ваш AsyncTask в другой пакет, то доступ к переменной isNavigationDrawerItemEnabled у вас не будет из-за того, что она не находится в том же пакете.
Для того чтобы решить эту проблему, вам нужно либо переместить ваш AsyncTask обратно в тот же пакет, где находится класс MainActivity, либо изменить модификатор доступа переменной на protected или default (без явного указания модификатора доступа). В этом случае переменная будет доступна из подклассов в других пакетах.
Например, если вы измените модификатор доступа на protected:protected boolean isNavigationDrawerItemEnabled = false; то ваш AsyncTask сможет обратиться к переменной isNavigationDrawerItemEnabled из другого пакета.
В Java модификатор доступа public позволяет видеть переменные вне класса, но только если они находятся в том же пакете. Если вы переместили ваш AsyncTask в другой пакет, то доступ к переменной isNavigationDrawerItemEnabled у вас не будет из-за того, что она не находится в том же пакете.
Для того чтобы решить эту проблему, вам нужно либо переместить ваш AsyncTask обратно в тот же пакет, где находится класс MainActivity, либо изменить модификатор доступа переменной на protected или default (без явного указания модификатора доступа). В этом случае переменная будет доступна из подклассов в других пакетах.
Например, если вы измените модификатор доступа на protected:protected boolean isNavigationDrawerItemEnabled = false;
то ваш AsyncTask сможет обратиться к переменной isNavigationDrawerItemEnabled из другого пакета.