总是在RatingBar上设置侦听器

时间:2019-06-26 06:09:46

标签: android ratingbar

我在应用中使用RatingBar,并试图在用户评分时在其上设置侦听器。

xml

<RatingBar
  android:id="@+id/ratingBar"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerVertical="true"
  android:numStars="5" />

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_watch_video);

    (...) //findViewById
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
            Toast.makeText(context, "on rating bar changed", Toast.LENGTH_SHORT).show();
        }
    });

}

但是,尽管活动进行了任何物理交互,但始终在活动开始时调用侦听器(setOnRatingBarChangeListener)。

在这里我可能遇到什么问题?

2 个答案:

答案 0 :(得分:0)

您可以在onRatingChanged函数中使用“ fromUser”参数进行检查。如果值为true,则表示评级已由用户更改。

答案 1 :(得分:0)

Use like this - 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_watch_video);

    (...) //findViewById
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
if(fromUser){
            Toast.makeText(context, "on rating bar changed", Toast.LENGTH_SHORT).show();
}
        }
    });

}