Intereting Posts
AlarmClock для начинающих – Android Android Как правильно получить значение с коммутатора? Ошибка VM при сборке Cordova PhoneGap Устройства Genymotion, не работающие в Eclipse на OS X Yosemite Мы можем получить хромированную историю просмотров / закладки в нашем приложении для Android Как программно переключить вкладки в android из фрагмента? Синхронизация проекта Android Gradle завершилась неудачно из-за целевой версии Взаимодействие Android Nexus One с Arduino + BlueSmirf Ошибка в окончательной последовательности запуска Не удалось выполнить команду MI -gdb-set target-async off Как отправить строку с помощью NFC с телефона Windows 8 на устройство Android Использование MediaCodec для сохранения серии изображений в виде видео Android: высота TextView не изменяется после сокращения размера шрифта Установите статический IP и шлюз программно в Android 6.x (Marshmallow) Ошибка: ожидания ожидания для блокировки кеша класса buildscript для файла сборки при изменении minSdkVersion Как реализовать шаблон «Загрузка изображений» (непрозрачность, экспозиция и насыщенность) из новых руководств по дизайну материалов

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