2013-05-13 4 views
0

Я очень новичок в Java. Поэтому простите меня за задание такого простого вопроса.Использование переменной для указания объекта R


Чтобы установить фоновое изображение зрения, я могу сделать это с помощью

int TheButton = R.drawable.button1; 
button.setBackgroundResource(TheButton); 

Но как это может быть сделано, если я хочу использовать переменную, чтобы указать объект R?

int a = 1; 
int TheButton = R.drawable["button"+a]; //this is what I'll do in javascript... 
button.setBackgroundResource(TheButton); 

ответ

1

Попробуйте это:

  String variable="button" + a; 
     int Button = getResources().getIdentifier(variable, "drawable", getPackageName()); 
     //Whatever you want to do.. 
1

В Android вы не можете получить доступ к ресурсам, что путь, потому что, когда андроид компилирует приложение он переводит все эти поля в Constant Value (INT).

Таким образом, вы должны написать свой собственный картограф, чтобы получить результаты вы ожидаете, например, вы можете поместить все соответствующие ресурсы в массиве:

int[] myResourceArray = new int[]{R.drawable.first, R.drawable.second ...}; 
button.setBackgroundResource(myResourceArray[0]); 
... 
button.setBackgroundResource(myResourceArray[1]); 

Или вы можете использовать путь @Sercan Предлагается, но в соответствии с документацией андроида они не рекомендуют использовать его по соображениям производительности. см. здесь: getIdentifier()

0

Хорошо, прежде всего, поскольку в переменных java набраны, вы не можете добавить int в последовательность символов.

Во-вторых, вы не можете использовать строку для вызова общедоступной переменной из класса (в этом случае автоматически сгенерированный класс R).

Третья точка, если tou хочет использовать много доступных на кнопке и переключаться между ними, я предлагаю вам использовать выпадающий список уровней или вычерчивать список состояний.

посмотреть на: http://developer.android.com/guide/topics/resources/drawable-resource.html

1

Когда мы используем R.drawable.button1 это относится к int элементу drawable класса, который находится в R классе. R.java - это самогенерируемый класс в папке gen.

So int TheButton = R.drawable["button"+a]; не будет работать.

если вы хотите назначить определенный идентификатор из JS, то вы можете непосредственно использовать код, скопированный из R.java как int TheButton =0x7f080002; скопированного из R.java

ИЛИ

int TheButton = getResources().getDrawable(R.drawable.button1); 
Смежные вопросы