5

我在我的应用程序中使用 RatingBar 元素,并尝试使用 OnRatingChangedListener 进行设置。在侦听器中,我在变量上使用 if 语句做不同的事情。问题是,由于某种原因,当我有多个选项时,这个监听器不起作用。它是在 onCreate() 方法中设置的,在 if 语句中的变量获取值之前,但我试图将它移动到不同的位置,但根本没有成功。

我的 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 之后。有什么解决办法吗?

4

1 回答 1

6

为了使您的代码正常工作,您必须使用该equals()方法检查是否Code具有正确的值:

// ...
} else if (Code.equals("1")){
// ...

==将测试引用并将返回false,因为这两个引用不指向同一个对象。

于 2012-09-28T19:43:40.920 回答