java - Android RatingBar onRatingChanged doesn't get called -


in android app i've got fragment showing ratingbar, has onratingchanged listener not responding ratingbar changes.

so here's code:

rating_fragment.xml

<android.support.v7.widget.cardview xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rating_fragment" android:layout_width="match_parent" android:layout_height="wrap_content">  <linearlayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="vertical">       <ratingbar         android:id="@+id/rating_fragment_ratingbar"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="center_horizontal"         android:stepsize="1"         />      <edittext         android:layout_margintop="16dp"         android:id="@+id/rating_fragment_whatswrong"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:hint="@string/rating_fragment_whatswrong"         android:layout_gravity="center_horizontal"         android:visibility="gone"         tools:visibility="visible"         />  </linearlayout>  </android.support.v7.widget.cardview> 

ratingfragment.java

public class ratingfragment extends dialogfragment implements ratingbar.onratingbarchangelistener{  private static final string tag = ratingfragment.class.getsimplename(); private view rootview; private edittext mwhatswrong;  @nonnull @override public dialog oncreatedialog (bundle savedinstancestate) {     // create new alertdialog.builder     alertdialog.builder builder = new alertdialog.builder(getcontext());      // layout inflater     layoutinflater layoutinflater = getactivity().getlayoutinflater();     rootview = layoutinflater.inflate(r.layout.rating_fragment,null);      // inflate layout     builder.setview(r.layout.rating_fragment);     builder.settitle(getstring(r.string.rating_fragment_title));      initialize();     return builder.create(); }  @nullable @override public view oncreateview (layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {     rootview = inflater.inflate(r.layout.rating_fragment,container,false);     return rootview; }    private void initialize(){     ratingbar ratingbar = (ratingbar) rootview.findviewbyid(r.id.rating_fragment_ratingbar);     mwhatswrong = (edittext) rootview.findviewbyid(r.id.rating_fragment_whatswrong);      ratingbar.setonratingbarchangelistener(this); }   @override public void onratingchanged (ratingbar ratingbar, float rating, boolean fromuser) {     toast.maketext(getcontext(), string.valueof(rating), toast.length_short).show();      if(rating < 4.0f){         mwhatswrong.setvisibility(view.visible);     } else {         mwhatswrong.setvisibility(view.gone);     } } 

expected behavior: onratingchanged() method gets invoked.

current behavior: if change stars in widget, nothing happens.

try this.

@nonnull @override public dialog oncreatedialog(bundle savedinstancestate) {     // create new alertdialog.builder     alertdialog.builder builder = new alertdialog.builder(getcontext());      // layout inflater     layoutinflater layoutinflater = getactivity().getlayoutinflater();     rootview = layoutinflater.inflate(r.layout.rating_fragment, null);      // inflate layout     builder.setview(r.layout.rating_fragment);     builder.settitle(getstring(r.string.rating_fragment_title));     // edited here     // initialize();     return builder.create(); }  @nullable @override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) {     rootview = inflater.inflate(r.layout.rating_fragment, container, false);     // edited here,add initialize() method     initialize();     return rootview; }   private void initialize() {     // edited here,add log info     log.e("ratingbar", "initialize start");     ratingbar ratingbar = (ratingbar) rootview.findviewbyid(r.id.rating_fragment_ratingbar);     mwhatswrong = (edittext) rootview.findviewbyid(r.id.rating_fragment_whatswrong);      // edited here     ratingbar.setonratingbarchangelistener(new ratingbar.onratingbarchangelistener() {         @override         public void onratingchanged(ratingbar ratingbar, float rating, boolean b) {              if (rating < 4.0f) {                 mwhatswrong.setvisibility(view.visible);             } else {                 mwhatswrong.setvisibility(view.gone);             }              log.e("ratingbar", rating + "");         }     }); } 

Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -