Существует 2 класса и 1 интерфейс: класс 1 = LoginPage, класс 2 = SyncData и интерфейс = AsyncTaskCompleteListener.NullpointerException при использовании функции обратного вызова в AsyncTask
В классе 1 используется класс 2 для синхронизации информации с сервером. После того, как класс 2 отправляет информацию о результатах в метод onPostExecute, метод обратного вызова интерфейса будет использоваться для отправки информации о результатах в класс 1. Когда я пытаюсь использовать метод обратного вызова, я вижу следующую ошибку:
04-12 11:06:43.715: W/dalvikvm(24941): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
04-12 11:06:43.720: E/AndroidRuntime(24941): FATAL EXCEPTION: main
04-12 11:06:43.720: E/AndroidRuntime(24941): java.lang.NullPointerException
04-12 11:06:43.720: E/AndroidRuntime(24941): at com.on_d_mand.live_evenementen.SyncData.onPostExecute(SyncData.java:101)
04-12 11:06:43.720: E/AndroidRuntime(24941): at com.on_d_mand.live_evenementen.SyncData.onPostExecute(SyncData.java:1)
04-12 11:06:43.720: E/AndroidRuntime(24941): at android.os.AsyncTask.finish(AsyncTask.java:417)
04-12 11:06:43.720: E/AndroidRuntime(24941): at android.os.AsyncTask.access$300(AsyncTask.java:127)
04-12 11:06:43.720: E/AndroidRuntime(24941): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
04-12 11:06:43.720: E/AndroidRuntime(24941): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 11:06:43.720: E/AndroidRuntime(24941): at android.os.Looper.loop(Looper.java:130)
04-12 11:06:43.720: E/AndroidRuntime(24941): at android.app.ActivityThread.main(ActivityThread.java:3691)
04-12 11:06:43.720: E/AndroidRuntime(24941): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 11:06:43.720: E/AndroidRuntime(24941): at java.lang.reflect.Method.invoke(Method.java:507)
04-12 11:06:43.720: E/AndroidRuntime(24941): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
04-12 11:06:43.720: E/AndroidRuntime(24941): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
04-12 11:06:43.720: E/AndroidRuntime(24941): at dalvik.system.NativeStart.main(Native Method)
Класс 1 onTaskComplete метод выборки:
public void onTaskComplete(String result) {
//perform action after receiving the information
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}
Класс 2 onPostExecute образца метод:
public void onPostExecute(String RESULT) {
if(dialog.isShowing()){
dialog.dismiss();
}
callback.onTaskComplete(RESULT);
}
Класс 3:
package com.on_d_mand.live_evenementen;
public interface AsyncTaskCompleteListener<T> {
public void onTaskComplete(T result);
}
Кто-нибудь знает, что я здесь делаю неправильно? Надеюсь, это не слишком сложно с классами и интерфейсом.
Редактировать
Решения этой проблемы был с помощью инициализации объекта обратного вызова в классе 2 застройщика.
Можете ли вы опубликовать код, в котором вы инициализируете поле «обратного вызова» вашей AsyncTask? Мое подозрение в том, что это либо не выполняется, либо делается слишком поздно (например, после запуска задачи). – Jules
По какой-то причине я не могу инициализировать обратный вызов.Когда я пытаюсь его инициализировать, я вижу следующее сообщение об ошибке: Не удается создать экземпляр типа AsyncTaskCompleteListener –
Xarialon
Можете ли вы опубликовать код, который вы используете, когда пытаетесь его инициализировать? – Jules