Intereting Posts
Wget в терминале Android Переключение пользователя или повторная аутентификация с помощью Instagram Как установить в AutoCompoteTextView выпадающий фон для прозрачного в Android? Как активировать действие с помощью локального уведомления, созданного из удаленного уведомления Чтобы проверить, содержит ли строка определенное слово Android: «Автообновление» через определенное время Android AsynTask с диалогом прогресса отменит Настроить заполнение и разметку в IconPageIndicator Лучший способ получить контекст приложения в статический метод в Android HTTP / 1.1 401 Неавторизованный при загрузке двоичного файла на bintray Java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет VM Использование API Google Адресов в Android Андроид Android для запуска в Ui Thread Clueless О (возможно) утечке памяти Android Преобразование рамки предварительного просмотра в растровое изображение

Android: ImageView getID (); Возвращаемое целое число

Я установил класс onTouch, чтобы определить, когда нажата одна из моих 40 кнопок.

Проблема, с которой я сталкиваюсь, – это определить, какая кнопка была нажата.

Если я использую:

Int ID = iv.getId ();

Когда я нажимаю кнопку «widgetA1»,

Я получаю следующий ID:

2131099684

Я бы хотел, чтобы он возвращал идентификатор строки "widgetA1"

от: 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> 

от: 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 } 

+ – + – + – + – + – + –

Я другой мудрый прекрасно работает, он знает, какую кнопку вы нажимаете. Я совершенно новый для этого Android JAVA. Дайте мне знать, если вы, ребята, можете мне помочь.

Solutions Collecting From Web of "Android: ImageView getID (); Возвращаемое целое число"

Вы не можете получить эту строку widgetA1 … Вы всегда получите целое число. Но это целое уникально для этого элемента управления.

Поэтому вы можете сделать это, чтобы проверить, какая кнопка нажата

 int ID = iv.getId(); if(ID == R.id.widgetA1) // your R file will have all your id's in the literal form. { } 

Xml

 android:tag="buttonA" 

Src

 Button.getTag().toString(); 

Изменить – TL; DR:

 View v; // handle to your view String idString = v.getResources().getResourceEntryName(v.getId()); // widgetA1 

Оригинал:

Я знаю, что прошло некоторое время с тех пор, как вы отправили сообщение, но я столкнулся с подобной проблемой, и я думаю, что нашел решение, посмотрев исходный код Android для класса View .

Я заметил, что когда вы печатаете представление (неявно вызывающий toString ()), напечатанные данные включают строку ID, используемую в файлах макета (тот, который вы хотите), вместо целого, возвращаемого getId (). Поэтому я посмотрел исходный код для представления toString (), чтобы увидеть, как Android получает эту информацию, и на самом деле это не слишком сложно. Попробуй это:

 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); 

В исходном коде Android также использует getResourcePackageName(id) и getResourceTypeName(id) для создания полной строки:

 String idString = res.getResourcePackageName(id) + ":" + res.getResourceTypeName(id) + "/" + res.getResourceEntryName(id); 

Это приводит к чему-то влиянию android:id/widgetA1 .

Надеюсь, это поможет!

Конечно, вы можете получить widgetA1 , просто выполните:

 ImageView iv = (ImageView)v; int id = iv.getId(); String idStr = getResources().getResourceName(id); 

Он должен предоставить вам your.package.name:id/widgetA1 , а затем сделать то, что вы хотите, с этой строкой.

Мы получим значение Integer, соответствующее идентификатору views. Для определения того, на какую кнопку вы нажимаете, лучше использовать теги. Вы можете установить тег в XML-файл макета и можете сравнить, какой элемент вы нажали с помощью.

 <Button android:id="@+id/btnTest" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button" android:tag="btntestTag"/> 

Это пример использования.

Я думаю, что вы можете использовать эту попытку

  ImageView imgView = new ImageView(this); String imgName = "img"//in your case widgetA1 int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 

Для реализации вы можете использовать атрибут подсказки для хранения имени кнопки, которое доступно. Например, в коде кнопки (.xml-файл) используйте следующую строку:

 android:hint="buttonName" 

Затем в функции onClicked (.java-файл) напишите следующее, чтобы получить подсказку:

 String hint = ((Button)v).getHint().toString(); //v is the view passed onClick