Ich versuche, einen Service von einem Fragment auf dieselbe Weise zu binden, wie ich es in einer Aktivität erfolgreich getan habe, aber wenn ich versuche, eine Methode für den Service aufzurufen, bekomme ich eine NullPointerException - Offensichtlich, weil der Service null ist. Gibt es jetzt ein Problem mit der Bindung an den Dienst in onStart oder mache ich es einfach falsch?
%Vor%Bearbeiten: Entschuldigung. Das ist mein Fehler, wenn ich dieser Frage nicht genug nachgedacht habe. mConnection ist eine ServiceConnection und sieht folgendermaßen aus:
%Vor%Stapelverfolgung:
%Vor%Und dies ist genau der Ort, an dem die Ausnahme ausgelöst wird: Fall POPULATE_ID:
%Vor%Ich habe das Problem gelöst. Es stellte sich heraus, dass ich vergessen hatte, in meinem Manifest die Dienstdeklaration mit dem korrekten Paketnamen anzugeben.
durch Ändern
%Vor%bis
%Vor%Ich habe das Problem gelöst und der Dienst verbindet sich jetzt wie erwartet.
Ihr NullPointerException
steht auf der Variable mService
. Wenn Sie bindService()
aufrufen, wird Activity
an den Service
eines eigenen Threads gebunden. Dies bedeutet, dass der Code weiterhin ausgeführt wird, während der Service verbindlich ist. Dies führt dazu, dass Ihre mService
Variable immer noch null
ist.
Sie können den Code, der nach der Bindung von Service
ausgeführt werden muss, an die Methode onServiceConnected()
Ihrer mConnection
verschieben. Dadurch wird sichergestellt, dass die Variable mService
auf Ihren Dienst verweist und nicht null ist.
Tags und Links android android-fragments