2

我有以下代码从评级栏获取信息并将其放入 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

4 回答 4

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());
    }

}
于 2013-04-29T06:20:52.187 回答
0

看看这个以获得解决方案。

r.string 错误“无法解析或不是字段”

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

编辑:: 这是不正确的,另一个答案中说明了问题。通过@Marv

于 2013-04-29T00:28:33.080 回答
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.

于 2013-04-29T00:29:14.897 回答
0

a-) 我认为你的问题是你需要你的类MainActivity实现OnRatingBarChangeListener

public class MainActivity extends Activity implements OnRatingBarChangeListener {

}

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

import android.R;

但:

import your.application.packagename.R;

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

希望能帮助到你!

于 2013-04-29T00:23:13.850 回答