Объясните пожалуйста в чём ошибка.
Хочу использовать вложенный оператор switch, но где то явно что то упускаю, суть в том что при нажатии на одну из 4 картинок снизу, сверху должна появиться та на которую нажал, а оно не выходит, и ошибок не выдаёт.
Может ли это быть из за того что button не относиться к View?
public void onClick(View v) {
switch(v.getId()) {
case R.id.button:
switch(v.getId()) {
case R.id.imageView1:
mainImage.setImageResource(R.drawable.image1);
break;
case R.id.imageView2:
mainImage.setImageResource(R.drawable.image1);
break;
case R.id.imageView3:
mainImage.setImageResource(R.drawable.image1);
break;
case R.id.imageView4:
mainImage.setImageResource(R.drawable.image1);
break;
}
break;
case R.id.button2:
switch(v.getId()) {
case R.id.imageView1:
mainImage.setImageResource(R.drawable.image2);
break;
case R.id.imageView2:
mainImage.setImageResource(R.drawable.image2);
break;
case R.id.imageView3:
mainImage.setImageResource(R.drawable.image2);
break;
case R.id.imageView4:
mainImage.setImageResource(R.drawable.image2);
break;
}
break;
case R.id.button3:
switch(v.getId()) {
case R.id.imageView1:
mainImage.setImageResource(R.drawable.image3);
break;
case R.id.imageView2:
mainImage.setImageResource(R.drawable.image3);
break;
case R.id.imageView3:
mainImage.setImageResource(R.drawable.image3);
break;
case R.id.imageView4:
mainImage.setImageResource(R.drawable.image3);
break;
}
break;
}
}
public void photo(){
mainImage = (ImageView) findViewById(R.id.mainImageView);
imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView2 = (ImageView) findViewById(R.id.imageView2);
imageView3 = (ImageView) findViewById(R.id.imageView3);
imageView4 = (ImageView) findViewById(R.id.imageView4);
imageView1.setOnClickListener(this);
imageView2.setOnClickListener(this);
imageView3.setOnClickListener(this);
imageView4.setOnClickListener(this);
}
}
При нажатии на какой-либо виджет (в Вашем случае кнопка или картинка), вызывается коллбэк onClick(View v), где View v соответствует нажатому виджету.
Насколько я понимаю, onClick(View v) у Вас срабатывает при нажатии на картинку. В таком случае v.getId() не сможет отдать Вам идентификатор R.id.button (и остальные идентификаторы, соответствующие другим кнопкам).
суть в том что при нажатии на одну из 4 картинок снизу, сверху должна появиться та на которую нажал, а оно не выходит, и ошибок не выдаёт.
Для решения этой задачи вложенный switch не нужен, достаточно всего одного switch'а:
public void onClick(View v) {
switch(v.getId()) {
case R.id.imageView1:
mainImage.setImageResource(R.drawable.image1);
break;
case R.id.imageView2:
mainImage.setImageResource(R.drawable.image2);
break;
case R.id.imageView3:
mainImage.setImageResource(R.drawable.image3);
break;
case R.id.imageView4:
mainImage.setImageResource(R.drawable.image4);
break;
}
}
}
Может ли это быть из за того что button не относиться к View?
Button как раз относится к View:
class Button extends TextView {...}
class TextView extends View {...}
поэтому Button можно скастовать к View.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей