3
我在我的应用中使用了RatingBar元素,并试图使用OnRatingChangedListener进行设置。在监听器中,我使用if语句在变量上做不同的事情。问题是,由于某种原因,当我有多个选项,这个监听器不工作。它在onCreate()方法中设置,在if语句中的变量获得一个值之前,但我试图将它移动到其他位置,但没有成功。Android RatingBar onRatingChanged监听器
我的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);
}
}
}
});
我的代码变量是一个的AsyncTask完成后确定,所以可能产生UI之后。任何解决方案
在任务完成并且'Code'不是'null'之前,侦听器将不工作。但是当'Code'不是'null'时,它仍然不起作用,因为你试图用==来比较字符串,它不起作用(因为它比较引用),而应该使用'Code.equals(“1” )'。 – Luksprog
非常感谢你,.equals工作!你能在答案中输入这个,所以我可以选择它吗? – arielschon12