So erhalten Sie den Ressourcennamen aus der Ressourcen-ID


114

In meinem Layout habe ich so etwas definiert.

<RadioButton 
android:id="@+id/radio1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Dnt want this text" /> 

Angenommen, dass einige Funktion in Aktivität gibt mir diese ID (ID RadioButton) zurück. Jetzt möchte ich diesen Text radio1 von dieser ID bekommen. Kurz gesagt möchte ich Text radio1 abrufen geschrieben in android:id="@+id/radio1"

jemand kann mir sagen, wie es möglich ist?

  0

es ist eine lange Geschichte .. ich muss besiedelten Daten in eine große Anzahl der editText von einigen vom Server empfangenen Daten. Also, anstatt Daten manuell in alle Textfelder zu setzen, schreibe ich eine Methode, die für mich funktionieren könnte. Dafür brauche ich diese. 13 apr. 122012-04-13 08:53:14

259

in Ihrer Tätigkeit, zB diese:

  1. zu erhalten String wie radio1:

    getResources().getResourceEntryName(int resid); 
    
  2. String erhalten wie com.sample.app:id/radio1:

    getResources().getResourceName(int resid); 
    
+3

Vielen Dank für die Beantwortung dieser Frage, ich verbrachte den besseren Teil einer Stunde damit, dieses Problem zu googeln - die Dev-Seite wies mich immer wieder auf getString() hin - was verdammt nutzlos dafür war. 05 sep. 122012-09-05 12:03:51

+8

Irgendeine Idee, was der Unterschied zwischen 'getResourceEntryName (int resid)' und 'getResourceName (int resid)' ist? 22 jan. 142014-01-22 17:10:48

+9

@JoshPinter Die Referenz lautet: ** getResourceEntryName: ** Geben Sie den Eintragsnamen für eine bestimmte Ressourcen-ID ein ** getResourceName: ** Geben Sie den vollständigen Namen für eine angegebene Ressourcen-ID zurück. Dieser Name ist ein einzelner String der Form "package: type/entry" Der Unterschied scheint dann in dem hinzugefügten * Paket zu liegen: Typ * für ** getResourceName ** 22 mär. 142014-03-22 01:26:29

  0

@Shubhayu - wie könnte man das in einem Espresso machen Prüfung? Die Funktion getResources() scheint nicht verfügbar zu sein! 05 okt. 162016-10-05 17:07:07


0

Sie meinen, Sie möchten den String-Text der ID nehmen?

Da Sie es definiert haben, sollten Sie wissen, was das ist.

Wenn Sie ein Layout haben und herausfinden möchten, ob eine View eine bestimmte ID hat, können Sie das gesamte Layout durchlaufen und mit getId() überprüfen, ob die ID der einzelnen View die ID ist, nach der Sie suchen.

hoffe, das hilft (wenn ich verstehe Ihre Frage korrigieren .. :))

  0

Nein, du hast alles falsch verstanden. Ich möchte Text ** Radio1 ** von ** Android: ID = "@ + ID/Radio1" ** 13 apr. 122012-04-13 08:50:01

  0

Text Radio1 ist die ID Ihrer Ansicht. Es ist kein einfacher Text, den Sie erhalten, teilen, etc .. Um Ihnen besser zu helfen, können Sie uns sagen, wozu Sie diesen Text genau benötigen? 13 apr. 122012-04-13 08:52:58

  0

@DimitrisMakris: Es ist eine lange Geschichte .. Ich muss Daten in eine große Anzahl von editText von einigen Daten vom Server erhalten gefüllt. Anstatt also die Daten manuell in alle Textfelder zu setzen, schreibe ich eine Methode, die für mich funktionieren könnte. Dafür brauche ich 13 apr. 122012-04-13 08:53:55

  0

. Wenn Sie also eine Antwort von 10 Zeichen haben, mit denen Sie 10 Radiobuttons füllen wollen, dann Eine Lösung könnte darin bestehen, diese Radiobuttons dynamisch zu erstellen und ihren Wert festzulegen. Ein anderer Ansatz könnte darin bestehen, ein ListView mit Radiobuttons als Listenelemente zu verwenden, wenn dies natürlich Ihren Anforderungen bezüglich des Layouts entspricht. 13 apr. 122012-04-13 08:57:23

  0

Danke für Ihre Antwort. Aber du hast alles falsch, ich habe 10 editBox und ich erhalte als json string mit dem Wert, der in diesen 10 Eingabefeldern zu füllen ist, nachdem dieser String parsered ist, wird er in HashMap umgewandelt. Anstatt nun manuell jeden Wert (entsprechend dem Schlüssel von hashmap) dem editText-Text zuzuordnen, schreibe ich eine Methode, die für mich funktionieren könnte. 13 apr. 122012-04-13 09:03:43

  0

Sagen Sie mir, ob Sie eine gute Lösung dafür haben. 13 apr. 122012-04-13 09:06:26


8

Sie haben id ('long' Typ) von dieser ID Sie Radiobutton wollen id (name) die ist für den Zugriff auf radio1. Mit diesem

getResources().getResourceEntryName(id); 

über Sie bei der Verwendung können Namen von Radiobutton heißt radio1 bekommen. hier Parameter-ID ist, was Sie haben (langer Typ). Versuchen Sie es, es wird Ihnen 100% helfen.

+1

Danke. Froh, dass jemand tatsächlich die Frage beantwortet hat, anstatt die üblichen Antworten "warum brauchst du diese [noob]". Den Namen des Elements zu haben, während ich durch sie Iteriere, ist für Debugging UNGÜLTIG. Ich meine, wirklich, wie werde ich den TextView mit ID 354814715 finden? (was, wenn ich mich nicht irre, ist zwischen Compilations nicht einmal konstant) - nicht sicher, warum das OP es brauchte, aber ich brauchte es, um zu überprüfen, ob meine Font-Skalierungsfunktion tatsächlich alle Unterelemente durchlaufen hat. 05 sep. 122012-09-05 12:01:23


0

Wenn es richtig bin, was du abgerufen wollte das Wort „radio1“ ist (von der ID selbst?) Dann, wenn das der Fall ist, dann müssen Sie zuerst seine ID

int intname= buttonname.getId(); 

dann bekommen das Ergebnis erhalten

es
String stringname= get regetResources().getResourceEntryName(intname); 

hoffte ich half