Wie binde ich einen Service von einem Fragment?

8

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%     
CodePrimate 02.01.2013, 15:31
quelle

2 Antworten

13

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.

    
CodePrimate 03.01.2013, 14:36
quelle
0

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.

    
tolgap 03.01.2013 14:27
quelle

Tags und Links