I'm using a RatingBar in my app and trying to set a listener on it when a user rates.
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();
}
});
}
However the listener (setOnRatingBarChangeListener) is always called when the activity starts, despite any physical interaction on it.
What could be my issue here?
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();
}
}
});
}