2013-04-29 190 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()); 
    } 

}