java Android RatingBar onRatingChanged不会被调用
在我的Android应用程序中,有一个片段显示了一个RatingBar,其中有一个onRatingChanged监听器,它不响应RatingBar的更改
下面是我的代码:
评级_片段。xml
<安卓.support.v7.widget.CardView
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:id="@+id/rating_fragment"
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content">
<LinearLayout
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content"
安卓:orientation="vertical">
<RatingBar
安卓:id="@+id/rating_fragment_ratingbar"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:layout_gravity="center_horizontal"
安卓:stepSize="1"
/>
<EditText
安卓:layout_marginTop="16dp"
安卓:id="@+id/rating_fragment_whatswrong"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:hint="@string/rating_fragment_whatswrong"
安卓:layout_gravity="center_horizontal"
安卓:visibility="gone"
tools:visibility="visible"
/>
</LinearLayout>
</安卓.support.v7.widget.CardView>
分级片段。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 a new AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
// Get the layout inflater
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
rootView = layoutInflater.inflate(R.layout.rating_fragment,null);
// Inflate the 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);
}
}
预期行为:调用onRatingChanged()方法
当前行为:即使我更改了小部件中的星号,也不会发生任何事情
# 1 楼答案
试试这个