Cómo obtener el nombre del recurso desde el ID del recurso


114


En mi diseño, he definido algo como esto.

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

Supongamos que alguna función en actividad me devuelve esta identificación (id de radioButton). Ahora quiero obtener este texto radio1 de esta identificación. En resumen Quiero recuperar el texto radio1 escrito en android:id="@+id/radio1"

Puede alguien decirme cómo es posible?

  0

Su una larga historia .. i necesidad de datos pobladas en un gran nº de EDITTEXT algunos de los datos recibidos desde el servidor. Entonces, en lugar de configurar manualmente los datos en todo el cuadro de texto, estoy escribiendo un método que podría funcionar para mí ... para eso necesito esto. 13 abr. 122012-04-13 08:53:14

259

En su actividad, probar estos:

  1. para llegar cadena como radio1:

    getResources().getResourceEntryName(int resid); 
    
  2. para llegar cadena como com.sample.app:id/radio1:

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

Gracias por responder esto, pasé la mayor parte de una hora buscando en Google este problema: el sitio dev me seguía señalando a getString(), lo cual era inútil para esto. 05 sep. 122012-09-05 12:03:51

+8

¿Alguna idea de cuál es la diferencia entre 'getResourceEntryName (int resid)' y 'getResourceName (int resid)'? 22 ene. 142014-01-22 17:10:48

+9

@JoshPinter la referencia dice: ** getResourceEntryName: ** Devuelve el nombre de la entrada para un identificador de recurso dado ** getResourceName: ** Devuelve el nombre completo para un identificador de recurso dado. Este nombre es una sola cadena de la forma "paquete: tipo/entrada" La diferencia entonces parece estar en el paquete * agregado: escriba * para ** getResourceName ** 22 mar. 142014-03-22 01:26:29

  0

@Shubhayu - cómo podría hacer esto en un espresso ¿prueba? ¡La función getResources() no parece estar disponible! 05 oct. 162016-10-05 17:07:07


0

¿Quiere decir que quiere tomar el texto de la cadena del ID?

Como lo ha definido, debe saber de qué se trata.

Si tiene un diseño y desea encontrar si una Vista tiene una identificación específica, puede recorrer todo el diseño y consultar con getId(), si la ID de cada Vista es la identificación que está buscando ...

esperanza esto ayuda (si he de entender corregir su pregunta .. :))

  0

No, lo entendiste mal. Deseo recuperar el texto ** radio1 ** de ** android: id = "@ + id/radio1" ** 13 abr. 122012-04-13 08:50:01

  0

La radio de texto1 ES la identificación de su Vista. No se trata de un texto simple que puede obtener, dividir, etc. Para poder ayudarlo mejor, ¿puede decirnos para qué necesita exactamente este texto? 13 abr. 122012-04-13 08:52:58

  0

@DimitrisMakris: Es una larga historia ... necesito completar los datos en un gran no de editText a partir de algunos datos recibidos del servidor. Entonces, en lugar de establecer manualmente los datos en todo el cuadro de texto, estoy escribiendo un método que podría funcionar para mí ... para eso necesito este 13 abr. 122012-04-13 08:53:55

  0

Entonces, si tiene una respuesta de 10 por ejemplo, cadenas con las que desea llenar 10 botones de radio, piense que una solución podría ser crear dinámicamente estos botones de radio y establecer su valor. Otro enfoque podría ser utilizar un ListView con botones de radio como elementos de la lista, si por supuesto esto se ajusta a sus necesidades con respecto al diseño. 13 abr. 122012-04-13 08:57:23

  0

Gracias por su reposo. Pero lo entiendo mal, tengo 10 editBox y recibo una cadena json con el valor que debe llenarse en estos 10 cuadros de edición después de que esta cadena sea analizada y se convierta en HashMap. Ahora en lugar de mapear manualmente cada valor (correspondiente a la clave de hashmap) para editar el texto del texto ... estoy escribiendo un método que podría funcionar para mí. 13 abr. 122012-04-13 09:03:43

  0

Dígame si tiene alguna buena solución para hacer esto. 13 abr. 122012-04-13 09:06:26


8

Has Identificación (tipo 'larga') de ese ID que desea acceder botón de radio id (nombre) que es radio1. Se utiliza esta

getResources().getResourceEntryName(id); 

en el uso de más arriba, puede obtener el nombre del botón de radio, es decir radio1. aquí ID de parámetro es el que tiene (tipo largo). Prueba esto, te ayudará al 100%.

+1

Gracias. Me alegro de que alguien haya respondido la pregunta en lugar de la respuesta habitual "¿por qué necesitas esa [noob]"? Tener el nombre del elemento mientras estoy iterando a través de ellos es INVALUABLE para la depuración. Quiero decir, realmente, ¿cómo voy a encontrar el TextView con el ID 354814715? (que si no me equivoco ni siquiera es constante entre compilaciones) - no estoy seguro de por qué el OP lo necesitaba, pero lo necesitaba para verificar que mi función de escalado de fuente realmente se estaba iterando a través de todos los subelementos. 05 sep. 122012-09-05 12:01:23


0

Si tengo razón lo que quería recuperado es la palabra "radio1" (de la misma? Id) así que si ese es el caso, entonces primero tiene que conseguir su identificador

int intname= buttonname.getId(); 

a continuación, obtener el resultado de que

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

esperaba ayudé