2013-04-29 147 views
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无法解析”。我想知道为什么我得到这些错误以及如何解决它们。谢谢。

+0

这可能是您的R变量的问题。你用什么编辑和编译这个? – Nomad101 2013-04-29 00:21:22

+0

我正在使用Eclipse – 2013-04-29 00:22:51

+0

选择一个答案@MostafaSaadat – 2013-05-28 23:33:48

回答

0

A-)我觉得你的问题是,你需要你的MainActivity类实现OnRatingBarChangeListener

public class MainActivity extends Activity implements OnRatingBarChangeListener { 

} 

B-)另一个可能的错误是,你需要确保你没有这个你进口:

import android.R; 

但:

import your.application.packagename.R; 

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

希望它有帮助!

+0

仍然给我同样的错误:( – 2013-04-29 00:25:02

+0

好吧,让我更新我的答案与其他可能的错误@MostafaSaadat – 2013-04-29 00:28:47

+0

它现在有帮助吗?@MostafaSaadat – 2013-04-29 00:33:44

0

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

尝试做这样的事情:他们在整个班级都可以

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使用它们。

+0

这帮助,谢谢;现在onRatingChanged方法中可以使用“ratingText”和“rating”,但onRatingChanged方法没有得到“rating.setOnRatingBarChangeListener((OnRatingBarChangeListener)this);”因为它在OnCreate方法中。我不知道我写的是否合理。 – 2013-04-29 00:44:30

+0

@MostafaSaadat尝试在类中添加“implements OnRatingBarChangeListener”。 – MAV 2013-04-29 00:52:12

+0

试过了,当我尝试运行该应用程序它不起作用。 – 2013-04-29 00:56:36

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

}