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