2013-06-02 2 views
0

Я работаю на Android App, и я имел следующий код:пронумерованные изображения на setImageResource

int digit = 0; 
imageButton = (ImageView)findViewById(R.id.btn1); 
numberedImage = (ImageView)findViewById(R.id.Digit1); 

imageButton.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View v) 
     { 
      digit++; 
      numberedImage.setImageResource(R.drawable.number + ((digit) + 1)); 
     } 
}); 

и некоторые изображения на вытяжке папке number1, number2, и так далее ... Это код работал отлично, а затем, внезапно, он больше не работает.

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

После этого я также попытался использовать массивы и циклы, но я столкнулся с теми же ошибками:

"number cannot be resolved or is not a field"

, не была проблемой раньше.

ответ

0

У вас есть недоразумение. Но может быть, к счастью (или, к сожалению) ваш код дал вам успешный результат, для которого ваше недоразумение было более подкрепленным.

ImageView.setImageResource принимает идентификатор ресурса в качестве параметра. а не имя изображения. поэтому, когда вы добавляете цифру в идентификатор ресурса, он устанавливает изображение следующего идентификатора. так как имена ваших изображений являются последовательными, поэтому идентификаторы также были последовательными, поэтому вы получили успешный результат. Но это не гарантирует, что вы всегда будете это делать.

Я предполагаю, что раньше он работал, потому что в вашем ресурсе было изображение с именем number. Но теперь он удаляется.

Предлагаемое решение

Resources res = getResources(); 
String mDrawableName = "number" + digit + 1; // be sure those exist 
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); numberedImage.setImageResource(resId); 
+0

Отлично! Большое спасибо. =) –

+0

добро пожаловать :) – stinepike

0

пожалуйста любезно использовать

for(int i=0;i<imageCount;i++){ 
    int imageResId = getResources().getIdentifier("image" + i, "id", YourActivity.this.getPackageName()); 
    numberedImage.setImageResource(imageResId); 
} 

для того, чтобы получить доступ изображения по имени ресурса.

Смежные вопросы