• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps If statement error

ar792

Newbie
I have been developing a simple android app with a popup menu, an image view and a seekbar, when an item is selected in the popup menu a set of images are selected, and these are changed based on position of seekbar...
Menu item BMW
IMAGES: X1 X3 X5 X6 M6..

In my 1st if statement(whole statement highlighted), I am getting error "Case expressions must be constant expressions"

public class MainActivity extends Activity implements OnMenuItemClickListener {

public ImageView image;
public SeekBar sk;

@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

image = (ImageView) findViewById(R.id.imageView);
sk = (SeekBar) findViewById(R.id.seek_sh);

findViewById(R.id.btn_click).setOnClickListener(new OnClickListener() {
@override
public void onClick(View view) {
PopupMenu popupMenu = new PopupMenu(MainActivity.this, view);
popupMenu.setOnMenuItemClickListener(MainActivity.this);
popupMenu.inflate(cars);
popupMenu.show();
}
});


sk.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
case R.id.item_BMW:
@override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int = i;
i = 0;
progress = i;

switch (progress) {

if (i == 1){
image.setImageResource(R.drawable.x1);
break;
}

if (i == 2){
image.setImageResource(R.drawable.x2);
break;
}
....

if (i == 5){
image.setImageResource(R.drawable.m6);
break;
}
}
}
}
}
}
 
You are getting if statements and switch statements mixed up. You probably wanted to do something like this:

Code:
switch (progress) {
case 1:
  image.setImageResource(R.drawable.x1);
  break;
case 2:
  image.setImageResource(R.drawable.x2);
  break;
case 3:
  image.setImageResource(R.drawable.x3);
  break;
// ...
}
 
You are getting if statements and switch statements mixed up. You probably wanted to do something like this:

Code:
switch (progress) {
case 1:
  image.setImageResource(R.drawable.x1);
  break;
case 2:
  image.setImageResource(R.drawable.x2);
  break;
case 3:
  image.setImageResource(R.drawable.x3);
  break;
// ...
}

A small bug, after i created 2nd item "audi" with 5 images ,

import...
case R.id.item_AUDI:
image.setImageResource(R.drawable.A4);
sk.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

switch (progress) {

case 1:
image.setImageResource(R.drawable.A4);
break;

....

case 5:
image.setImageResource(R.drawable.Q7);
break;
}
}
}
....
}
No errors shown,

but while running the app seekbar only to this item works, the first menu bmw it doesnt... only if i remove this code, it works for the first item....

where have i gone wrong?
 
Last edited:
Back
Top Bottom