J'ai des problèmes pour appeler une fonction de classe à partir de mon widget à la suite d'une action de maintenance.Android Widget + Service
public class HelloWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Intent intent = new Intent(context, NeoService.class);
context.startService(intent);
MyClass mClass = new MyClass(context, appWidgetManager);
mClass.doUpdate();
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
L'appel à mClass.doUpdate() ci-dessus fonctionne très bien. Mais lorsque je tente de le faire à nouveau dans mon OnReceive cela ne fonctionne pas et je reçois un FORCECLOSE dès que l'action correcte est reçue:
@Override
public void onReceive(Context context, Intent intent) {
if(Intent.ACTION_TIME_TICK.equals(action))
{
mTime.doUpdate();
// Toast.makeText(context, "TicK Tock!", Toast.LENGTH_LONG).show();
}
}
Si je commente le mTime.doUpdate(); et décommentez le Toast, il affiche le pain grillé comme il se doit.
Edit: Le message d'erreur que je reçois est la suivante:
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): FATAL EXCEPTION: main
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.TIME_TICK flg=0x40000004 (has extras) } in [email protected]
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:905)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at android.os.Handler.handleCallback(Handler.java:587)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at android.os.Handler.dispatchMessage(Handler.java:92)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at android.os.Looper.loop(Looper.java:123)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at java.lang.reflect.Method.invokeNative(Native Method)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at java.lang.reflect.Method.invoke(Method.java:521)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at dalvik.system.NativeStart.main(Native Method)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): Caused by: java.lang.NullPointerException
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at de.thesmile.android.widget.HelloWidget.onReceive(HelloWidget.java:45)
11-18 18:25:00.201: ERROR/AndroidRuntime(2759): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
Utiliser 'adb logcat', DDMS, ou la perspective DDMS dans Eclipse pour examiner LogCat et regardez la trace de pile associée à votre "forceclose". De plus, gardez à l'esprit que 'doUpdate()' et 'doDaUpdate()' ne sont pas la même méthode. – CommonsWare
Désolé mon mauvais, ils sont tous deux nommés pareil, le "Da" n'appartient pas là. J'ai des problèmes en ce que je ne peux pas obtenir mon Galaxy Tab pour se signaler comme "Debug" capable de sorte que je ne peux pas passer à travers le programme pour trouver des problèmes. J'ai essayé toutes les choses aujourd'hui en vain. – Hamid