2012-03-17 66 views
4

我無法爲RatingBar設置評分。我的代碼如下。如何爲動態添加的RatingBar設置默認評級?
這是我的代碼。評分欄中的設置值

public class DialogRate extends Activity implements OnRatingBarChangeListener { 
... 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dialog_layout); 
    LinearLayout ll_dialog = (LinearLayout) findViewById(R.id.linearLayout_dialog);  
    final RatingBar rate_bar = new RatingBar(context); 
    rate_bar.setOnRatingBarChangeListener(this); 
    rate_bar.setStepSize((float) 0.5); 
    rate_bar.setMax(5); 
    rate_bar.setId(1); 
    rate_bar.setRating(2.0f); // Error occur on this line! 
    ll_dialog.addView(rate_bar); 
} 
... 
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 
    // TODO Auto-generated method stub 
    TextView rate_val = (TextView) findViewById(0); 
    rate_val.setText(Float.toString(ratingBar.getRating())); 
} 

錯誤堆棧:

Thread [<1> main] (Suspended) 
ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1645  
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1663 
ActivityThread.access$1500(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 117 
ActivityThread$H.handleMessage(Message) line: 931 
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 123 
ActivityThread.main(String[]) line: 3683  
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
Method.invoke(Object, Object...) line: 507 
ZygoteInit$MethodAndArgsCaller.run() line: 839 
ZygoteInit.main(String[]) line: 597 
NativeStart.main(String[]) line: not available [native method] 

關閉

對不起球員這個錯誤很簡單。 onRatingChanged中的TextView在setRating之後動態創建。

+1

a)總是添加的錯誤。 b)也許你必須'setNumStars()' – zapl 2012-03-17 14:41:06

+0

錯誤 - 找不到源代碼。 setNumStars()不能幫助我:( – 2012-03-17 14:47:50

+1

這將是'rate_bar.setNumStars(5);'。請將你從logcat得到的完整錯誤信息添加到你的文章中,沒有你沒有得到更多的猜測 – zapl 2012-03-17 14:54:13

回答

28

您可以使用此代碼:

rate_bar.setRating(Float.parseFloat("2.0")); 

或使用本:

rate_bar.setRating(0.0f); 
+4

爲什麼要指定爲'String',然後解析它,使它變成'float'?'rate_bar.setRating(2f);'也是一樣的(即使你不喜歡不會明確聲明它是浮動的,因爲Java會自動轉換爲float。) – zapl 2012-03-17 15:14:12