AsyncTask onPostExecute дает сбой (сообщает nullpointerexecption), когда я пытаюсь использовать значение, полученное от doInBackground, для обновления SharedPreferences.
Мой дескриптор вызывающей активности: private DashboardActivity<?> callerActivity;
без <?>
, на который он жалуется. Есть несколько способов: 1) обновить SP в onPostExecute как:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(callerActivity);
prefs.edit().putInt("lastrecord", intRec ).commit();
Я также вызвал метод в callerActivity как:
callerActivity.storeLastInsertedRecord(intRec);
Все ошибки одинаковые, на этих строках обнаружено nullpointerexection.
Что я делаю не так? Этот ответ Android - общие настройки, установленные в AsyncTask onPostExecute () не всегда устанавливается? от @denisdrew - самый близкий, но он вылетает в том же месте, когда я пытаюсь создать экземпляр намерения:
Intent myIntent = new Intent(callerActivity.getApplicationContext(), SharedPrefsHelperActivity.class);
Или
Intent myIntent = new Intent(callerActivity.getBaseContext(), SharedPrefsHelperActivity.class);
Что я делаю не так? Я знаю, что значение, которое я пытаюсь передать, не равно нулю (intRec).
1 ответ
Таким образом, проблема, скорее всего, связана с контекстом, который назначен для NULL
. Я предлагаю вам передать переменную контекста через конструктор AsyncTask e.q
private Context c;
public MyTask(Context c) {
this.c = c;
}
И назовите это так:
new MyTask(YourCallerActivity.this).execute();
Примечание. Я недавно работал над аналогичной проблемой (сохранение SharedPreferences в onPostExecute), и все работало нормально, так как я передал контекст через конструктор.
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.
DashboardActivity callerActivity;