我有以下代码从评级栏获取信息并将其放入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无法解析”。我想知道为什么我得到这些错误以及如何解决它们。感谢。
答案 0 :(得分:0)
a-)我认为你的问题是你需要你的班级MainActivity
实施OnRatingBarChangeListener
:
public class MainActivity extends Activity implements OnRatingBarChangeListener {
}
b-)另一个可能的错误是你需要确保你的导入中没有这个:
import android.R;
但:
import your.application.packagename.R;
c-)声明方法外的TextView ratingText
和RatingBar rating
,作为类的属性。
希望它有所帮助!
答案 1 :(得分:0)
看看这个解决方案。
r.string error "cannot be resolved or is not a field"
主要思想是确保您的R引用正确,并尝试删除gen文件并重建项目。
EDIT :: 这是不正确的问题在另一个答案中说明。由@Marv
答案 2 :(得分:0)
这是因为您在ratingText
方法中创建了rating
和onCreate
。这意味着它们仅在此方法中可用。
尝试做这样的事情:
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());
}
}