在RatingBar中设置数值

14

我无法为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]  

关闭

很抱歉,这个错误很简单。在 setRating 后,onRatingChanged 中动态创建了 TextView。


1
a) 总是添加错误。 b) 也许你需要使用 setNumStars() - zapl
错误 - 源代码未找到。setNumStars() 无法帮助我 :( - Alexander Shlenchack
1
这个代码应该是 rate_bar.setNumStars(5);。请将 logcat 中的完整错误信息添加到您的帖子中。如果没有错误信息,那么我们只能进行猜测。 - zapl
我在LogCat中收到的错误信息是:GC_EXTERNAL_ALLOC释放了103K,空闲内存占比51%,总内存为2681K / 5447K,外部内存为2121K / 2137K,暂停时间为76ms。 - Alexander Shlenchack
1
这与你的代码无关。错误看起来有点像这里:http://stackoverflow.com/questions/9750863/baseexpandablelistadapter-runtimeerror-nullpointerexception(LogCat) - zapl
2个回答

44
你可以使用这段代码:

你可以使用这个代码:

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

或者使用这个:

rate_bar.setRating(0.0f);

5
为什么要指定它为“String”,然后解析它变成“float”?使用“rate_bar.setRating(2f);”也可以做到同样的效果(即使您没有明确声明它为浮点型,因为Java会自动将其转换为浮点型)。 - zapl

2
我知道现在有点晚了,但是对于Kotlin,你可以这样实现:
`val rate=2
 rate_bar.rating = rate.toFloat()`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接