Wie kann ich den Typ eines Extra in einem Bündel bestimmen, das von Intent gehalten wird?

9

Ich versuche, willkürliche Daten an eine BroadcastReceiver durch ihre Intent zu übergeben.

Also könnte ich etwas wie das folgende tun

%Vor%

Und dann übergebe es an die BroadcastReceiver

Ich möchte Intent.getExtras() mit etwas wie keySet() durchlaufen, aber ich möchte auch den Wert des Schlüssels erhalten, ohne Aufrufe von Methoden wie .getStringExtra() oder% co_de hart codieren zu müssen %.

Wie macht eine Person das?

    
styler1972 23.08.2011, 15:20
quelle

2 Antworten

16

Sie können den folgenden Code verwenden, um jederzeit ein Objekt von Intent zu erhalten:

%Vor%

Dann können Sie den realen Typ von value mit den Methoden von Object ermitteln.

    
Michael 23.08.2011, 15:32
quelle
4

Sie können thye-Schlüssel durchsuchen, ohne den Typ der Werte zu kennen, indem Sie keySet() verwenden. Sie erhalten eine Menge von String , mit der Sie iterieren können (siehe doc ).

Aber für die Werte ist es normal, dass Sie eine typisierte Methode verwenden müssen ( getStringExtra() , getBooleanExtra() , usw.): Dies liegt daran, dass Java selbst eingegeben wurde.

Wenn Sie Daten beliebiger Typen an Ihre BroadcastReceiver senden möchten, sollten Sie entweder:

  • wandle alle deine Extras in String s um, bevor du sie sendest und alle als String s:

    abrufst %Vor%
  • oder verwenden Sie die Methode get() von Bundle , die Object s zurückgibt (siehe doc ):

    %Vor%
Shlublu 23.08.2011 15:31
quelle