example - Android: ImageView getID(); número entero que regresa
touch en android studio (7)
No puede obtener esa cadena widgetA1
... Siempre obtendrá un número entero. Pero ese entero es exclusivo de ese control.
para que pueda hacer esto y comprobar qué botón está presionado
int ID = iv.getId();
if(ID == R.id.widgetA1) // your R file will have all your id''s in the literal form.
{
}
He configurado una clase onTouch para determinar cuándo se presiona uno de mis 40 botones.
El problema que estoy enfrentando es determinar qué botón se presionó.
Si uso:
int ID = iv.getId ();
Cuando hago clic en el botón "widgetA1"
Recibo la siguiente ID:
2131099684
Me gustaría que devuelva la cadena ID "widgetA1"
desde: game.xml
<ImageView android:layout_margin="1dip" android:id="@+id/widgetA1" android:src="@drawable/image" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
desde: game.java
public boolean onTouch(View v, MotionEvent event) {
ImageView iv = (ImageView)v;
int ID = iv.getId();
String strID = new Integer(ID).toString();
Log.d(TAG,strID);
//.... etc
}
+ - + - + - + - + - + -
Yo, por lo demás, funciona bien, sabe qué botón estás presionando. Soy bastante nuevo en este Android JAVA. Avísame si me pueden ayudar.
Creo que puedes usar esto, pruébalo
ImageView imgView = new ImageView(this);
String imgName = "img"//in your case widgetA1
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
Xml
android:tag="buttonA"
Src
Button.getTag().toString();
Para la implementación, puede usar el atributo de sugerencia para almacenar el nombre del botón, que está accesible. Por ejemplo, en el código del botón (archivo .xml) use la siguiente línea:
android:hint="buttonName"
Luego, en la función onClicked (archivo .java), escriba lo siguiente para obtener la sugerencia:
String hint = ((Button)v).getHint().toString(); //v is the view passed onClick
Obtendremos el valor entero que corresponde a la id de vistas. Para saber en qué botón está haciendo clic, mejor usar etiquetas. puede establecer la etiqueta en el archivo xml de diseño y puede comparar con qué elemento ha hecho clic.
<Button
android:id="@+id/btnTest"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button"
android:tag="btntestTag"/>
Este es el uso de muestra.
Por supuesto, puedes obtener widgetA1
, simplemente hazlo:
ImageView iv = (ImageView)v;
int id = iv.getId();
String idStr = getResources().getResourceName(id);
Debería darle your.package.name:id/widgetA1
: your.package.name:id/widgetA1
/ your.package.name:id/widgetA1
, luego haga lo que quiera con esa cadena.
Editar - TL; DR:
View v; // handle to your view
String idString = v.getResources().getResourceEntryName(v.getId()); // widgetA1
Original:
Sé que ha pasado un tiempo desde que publicaste, pero estaba lidiando con un problema similar y creo que encontré una solución mirando el código fuente de Android para la clase View .
Me di cuenta de que cuando imprime una vista (llamando implícitamente a String ()), los datos impresos incluyen la cadena de identificación utilizada en los archivos de diseño (la que desea) en lugar del número entero devuelto por getId (). Así que miré el código fuente de View to toString () para ver cómo Android obtenía esa información, y en realidad no es demasiado complicado. Prueba esto:
View v; // handle to your view
// -- get your View --
int id = v.getId(); // get integer id of view
String idString = "no id";
if(id != View.NO_ID) { // make sure id is valid
Resources res = v.getResources(); // get resources
if(res != null)
idString = res.getResourceEntryName(id); // get id string entry
}
// do whatever you want with the string. it will
// still be "no id" if something went wrong
Log.d("ID", idString);
En el código fuente , Android también usa getResourcePackageName(id)
y getResourceTypeName(id)
para compilar la cadena completa:
String idString = res.getResourcePackageName(id) + ":" + res.getResourceTypeName(id)
+ "/" + res.getResourceEntryName(id);
Esto da como resultado algo en el sentido de android:id/widgetA1
.
¡Espero que ayude!