为什么我的代码不工作?
我有下面的代码从评价栏获取信息,并把它变成一个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无法解析”。我想知道为什么我得到这些错误以及如何解决它们。谢谢。
A-)我觉得你的问题是,你需要你的MainActivity
类实现OnRatingBarChangeListener
:
public class MainActivity extends Activity implements OnRatingBarChangeListener {
}
B-)另一个可能的错误是,你需要确保你没有这个你进口:
import android.R;
但:
import your.application.packagename.R;
c-)将方法外部的TextView ratingText
和RatingBar rating
声明为该类的一个属性。
希望它有帮助!
仍然给我同样的错误:( – 2013-04-29 00:25:02
好吧,让我更新我的答案与其他可能的错误@MostafaSaadat – 2013-04-29 00:28:47
它现在有帮助吗?@MostafaSaadat – 2013-04-29 00:33:44
看看这个解决方案。
r.string error "cannot be resolved or is not a field"
主要思想是,以确保您的R参考是正确的,并通过删除根文件试图重建项目。
编辑:: 这是不正确的问题是在另一个答案。 by @Marv
这是因为您在onCreate
方法中创建了ratingText
和rating
。这意味着它们仅在此方法内可用。
尝试做这样的事情:他们在整个班级都可以
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
使用它们。
这帮助,谢谢;现在onRatingChanged方法中可以使用“ratingText”和“rating”,但onRatingChanged方法没有得到“rating.setOnRatingBarChangeListener((OnRatingBarChangeListener)this);”因为它在OnCreate方法中。我不知道我写的是否合理。 – 2013-04-29 00:44:30
@MostafaSaadat尝试在类中添加“implements OnRatingBarChangeListener”。 – MAV 2013-04-29 00:52:12
试过了,当我尝试运行该应用程序它不起作用。 – 2013-04-29 00:56:36
试试这个。
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());
}
}
这可能是您的R变量的问题。你用什么编辑和编译这个? – Nomad101 2013-04-29 00:21:22
我正在使用Eclipse – 2013-04-29 00:22:51
选择一个答案@MostafaSaadat – 2013-05-28 23:33:48