I am using a RatingBar element in my app, and im trying to set it up with an OnRatingChangedListener. In the listener, im doing different stuff using if statements on a variable. Problem is, for some reason when i have multiple options this listener isn’t working. It is setup in the onCreate() method, before the variable in the if statements is getting a value, but i tried to move it to a different location with no success at all.
My onCreate():
bar = (RatingBar) findViewById(R.id.serviceLevel);
bar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
if(Code==null){
Toast.makeText(TipCalculatorActivity.this, "Locationing error occured, please report to the developer.", Toast.LENGTH_LONG).show();
}else if(Code=="1"){
if(rating==0){
autochange.setText("Precentage: 0%");
precentage = 0;
calculate(value, precentage);
}else if(rating==0.5){
autochange.setText("Precentage: 10%");
precentage = 8;
calculate(value, precentage);
}else if(rating==1){
autochange.setText("Precentage: 11%");
precentage = 9;
calculate(value, precentage);
}else if(rating==1.5){
autochange.setText("Precentage: 11%");
precentage = 10;
calculate(value, precentage);
}else if(rating==2){
autochange.setText("Precentage: 12%");
precentage = 11;
calculate(value, precentage);
}else if(rating==2.5){
autochange.setText("Precentage: 12%");
precentage = 12;
calculate(value, precentage);
}else if(rating==3){
autochange.setText("Precentage: 13%");
precentage = 13;
calculate(value, precentage);
}else if(rating==3.5){
autochange.setText("Precentage: 13%");
precentage = 14;
calculate(value, precentage);
}else if(rating==4){
autochange.setText("Precentage: 14%");
precentage = 15;
calculate(value, precentage);
}else if(rating==4.5){
autochange.setText("Precentage: 14%");
precentage = 16;
calculate(value, precentage);
}else if(rating==5){
autochange.setText("Precentage: 15%");
precentage = 17;
calculate(value, precentage);
}
}else if(Code=="2"){
if(rating==0){
autochange.setText("Precentage: 0%");
precentage = 0;
calculate(value, precentage);
}else if(rating==0.5){
autochange.setText("Precentage: 10%");
precentage = 10;
calculate(value, precentage);
}else if(rating==1){
autochange.setText("Precentage: 11%");
precentage = 11;
calculate(value, precentage);
}else if(rating==1.5){
autochange.setText("Precentage: 12%");
precentage = 12;
calculate(value, precentage);
}else if(rating==2){
autochange.setText("Precentage: 13%");
precentage = 13;
calculate(value, precentage);
}else if(rating==2.5){
autochange.setText("Precentage: 14%");
precentage = 14;
calculate(value, precentage);
}else if(rating==3){
autochange.setText("Precentage: 15%");
precentage = 15;
calculate(value, precentage);
}else if(rating==3.5){
autochange.setText("Precentage: 16%");
precentage = 16;
calculate(value, precentage);
}else if(rating==4){
autochange.setText("Precentage: 17%");
precentage = 17;
calculate(value, precentage);
}else if(rating==4.5){
autochange.setText("Precentage: 18%");
precentage = 18;
calculate(value, precentage);
}else if(rating==5){
autochange.setText("Precentage: 19%");
precentage = 19;
calculate(value, precentage);
}
}
}
});
My Code variable is set after an AsyncTask is done, so probably after the UI is generated. Any solution?
In order to make your code work you’ll have to use the
equals()method to check ifCodehas the right value:==will test the references and will returnfalseas the two references don’t point to the same object.