为什么我的代码不起作用?

时间:2013-04-29 00:17:18

标签: android ratingbar

我有以下代码从评级栏获取信息并将其放入TextView但它似乎不起作用:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView ratingText = (TextView) findViewById(R.id.ratingText);
    RatingBar rating=(RatingBar)findViewById(R.id.rating);
    rating.setOnRatingBarChangeListener((OnRatingBarChangeListener) this);

}

public void onRatingChanged(RatingBar ratingBar,float rating, boolean fromUser){
    ratingText.setText(""+this.rating.getRating()); 
}

在第二行代码中,它给出了以下错误:“评级无法解析或不是字段”和“ratingText无法解析”。我想知道为什么我得到这些错误以及如何解决它们。感谢。

4 个答案:

答案 0 :(得分:0)

a-)我认为你的问题是你需要你的班级MainActivity实施OnRatingBarChangeListener

public class MainActivity extends Activity implements OnRatingBarChangeListener {

}

b-)另一个可能的错误是你需要确保你的导入中没有这个:

import android.R;

但:

import your.application.packagename.R;

c-)声明方法外的TextView ratingTextRatingBar rating,作为类的属性。

希望它有所帮助!

答案 1 :(得分:0)

看看这个解决方案。

r.string error "cannot be resolved or is not a field"

主要思想是确保您的R引用正确,并尝试删除gen文件并重建项目。

EDIT :: 这是不正确的问题在另一个答案中说明。由@Marv

答案 2 :(得分:0)

这是因为您在ratingText方法中创建了ratingonCreate。这意味着它们仅在此方法中可用。

尝试做这样的事情:

private TextView ratingText = null;
private RatingBar rating = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ratingText = (TextView) findViewById(R.id.ratingText);
    rating=(RatingBar)findViewById(R.id.rating);
    rating.setOnRatingBarChangeListener((OnRatingBarChangeListener) this);

}

通过这种方式,它们可以在整个班级中使用,您可以在onRatingChanged中使用它们。

答案 3 :(得分:0)

试试这个。

public class Test extends Activity implements OnRatingBarChangeListener{

    TextView ratingText;
    RatingBar rating;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
         // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.info);

        ratingText = (TextView) findViewById(R.id.textView_aaa);
        rating=(RatingBar)findViewById(R.id.ratingBar1);
        rating.setOnRatingBarChangeListener((OnRatingBarChangeListener) this);

    }

    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating,
        boolean fromUser) {
        // TODO Auto-generated method stub
        ratingText.setText(""+this.rating.getRating());
    }

}