Come ottenere il nome della risorsa dall'ID risorsa


114


Nel mio layout ho definito qualcosa di simile.

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

Si supponga che qualche funzione in attività mi restituisca questo id (id di radioButton). Ora voglio ottenere questo testo radio1 da questo id. Insomma voglio recuperare il testo Radio1 scritto in android:id="@+id/radio1"

qualcuno può dirmi come è possibile?

  0

sua una lunga storia .. ho bisogno di dati popolate in un grande no di EditText da parte di alcuni dati ricevuti dal server. Quindi, invece di impostare manualmente i dati su tutta la casella di testo, sto scrivendo un metodo che potrebbe funzionare per me .. per questo ho bisogno di questo. 13 apr. 122012-04-13 08:53:14

259

Nella vostra attività, provare questi:

  1. per ottenere stringa come radio1:

    getResources().getResourceEntryName(int resid); 
    
  2. per ottenere stringa come com.sample.app:id/radio1:

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

Grazie per aver risposto a questo problema, ho trascorso la maggior parte di un'ora a cercare su Google questo problema: il sito dev ha continuato a puntare su getString(), il che era assolutamente inutile. 05 set. 122012-09-05 12:03:51

+8

Qualche idea di quale sia la differenza tra 'getResourceEntryName (int resid)' e 'getResourceName (int resid)'? 22 gen. 142014-01-22 17:10:48

+9

@JoshPinter il riferimento dice: ** getResourceEntryName: ** Restituisce il nome della voce per un determinato identificatore di risorsa ** getResourceName: ** Restituisce il nome completo per un determinato identificatore di risorsa. Questo nome è una singola stringa del modulo "pacchetto: tipo/voce" La differenza quindi sembra essere nel pacchetto aggiunto *: digita * per ** getResourceName ** 22 mar. 142014-03-22 01:26:29

  0

@Shubhayu - come potresti farlo in un espresso test? la funzione getResources() non sembra essere disponibile! 05 ott. 162016-10-05 17:07:07


0

Vuoi dire che vuoi prendere il testo stringa dell'ID?

Da quando lo hai definito dovresti sapere di cosa si tratta.

Se si dispone di un layout e si desidera rilevare se una vista ha un ID specifico, è possibile attraversare l'intero layout e verificare con getId(), se l'ID di ogni vista è l'ID che si sta cercando.

Spero che questo aiuti (se ho capire correggere la tua domanda .. :))

  0

No, hai sbagliato tutto. Voglio recuperare il testo ** radio1 ** da ** android: id = "@ + id/radio1" ** 13 apr. 122012-04-13 08:50:01

  0

Text radio1 È l'id della tua vista. Non è un testo semplice che puoi ottenere, dividere, ecc. Per aiutarti meglio, puoi dirci a cosa ti serve esattamente questo testo? 13 apr. 122012-04-13 08:52:58

  0

@DimitrisMakris: è una lunga storia .. ho bisogno di inserire i dati in un grande numero di editText da alcuni dati ricevuti dal server. Quindi, invece di impostare manualmente i dati su tutta la casella di testo, sto scrivendo un metodo che potrebbe funzionare per me .. per questo ho bisogno di questo 13 apr. 122012-04-13 08:53:55

  0

Quindi se hai una risposta di 10 per esempio stringhe con cui vuoi popolare 10 radiobutton, io pensare che una soluzione potrebbe essere quella di creare dinamicamente questi radiobutton e impostare il loro valore. Un altro approccio potrebbe essere quello di utilizzare un ListView con i pulsanti radio come voci di elenco, se naturalmente ciò soddisfa le vostre esigenze in merito al layout. 13 apr. 122012-04-13 08:57:23

  0

Grazie per il vostro rispetto. Ma hai sbagliato tutto ho 10 editBox e ricevo come stringa json con il valore da compilare in questi 10 editbox dopo che questa stringa è parserd viene convertita in HashMap. Ora invece mappare manualmente ogni valore (corrispondente alla chiave di hashmap) per modificare il testo del testo .. sto scrivendo un metodo che potrebbe funzionare per me. 13 apr. 122012-04-13 09:03:43

  0

Dimmi se hai una buona soluzione per farlo. 13 apr. 122012-04-13 09:06:26


8

Hai id (tipo 'lunga') da quella id si desidera accedere pulsante id (nome) cioè radio1. È possibile utilizzare questo

getResources().getResourceEntryName(id); 

nell'uso di sopra si può ottenere il nome del pulsante di scelta cioè Radio1. qui l'ID parametro è il tipo (tipo lungo). Prova questo ti aiuterà al 100%.

+1

Grazie. Sono contento che qualcuno abbia effettivamente risposto alla domanda invece delle solite risposte "perché hai bisogno di [noob]". Avere il nome dell'elemento mentre sto iterando attraverso di loro è INVALUABILE per il debug. Voglio dire, davvero, come faccio a trovare il TextView con ID 354814715? (che se non sbaglio non è nemmeno costante tra le compilazioni) - non sono sicuro del perché l'OP ne avesse bisogno, ma avevo bisogno che verificasse la mia funzione di ridimensionamento dei font stesse effettivamente iterando nonostante tutti i sottoelementi. 05 set. 122012-09-05 12:01:23


0

Se ho ragione quello che si voleva recuperare è la parola "Radio1" (dal id stesso?), Quindi se questo è il caso, allora in primo luogo è necessario ottenere il suo ID

int intname= buttonname.getId(); 

quindi ottenere il risultato di si

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

sperava ho aiutato