[英]Star Rating in Dialogbox won't change saved value
// Custom Dialog Box
final AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
final View mView = getLayoutInflater().inflate(R.layout.completed, null);
ImageButton imgForm = (ImageButton) mView.findViewById(R.id.RateButton);
mBuilder.setCancelable(false);
mBuilder.setView(mView);
final AlertDialog dialog = mBuilder.create();
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show(); // Dialogbox appears
// Interest Rating
final AlertDialog.Builder nBuilder = new AlertDialog.Builder( MainActivity.this, R.style.Theme_AppCompat_Light_Dialog_Alert);
final View nView = getLayoutInflater().inflate(R.layout.intrst, null);
Save_Intrst = (Button) nView.findViewById(R.id.SaveIntrst);
nBuilder.setCancelable(false);
nBuilder.setView(nView);
final AlertDialog dilog = nBuilder.create();
// LongPress Image Button
imgForm.setOnLongClickListener(new View.OnLongClickListener(){
@Override
public boolean onLongClick(View view){
dialog.dismiss();
dilog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dilog.show(); // Dialogbox appears
return true;
}
});
Save_Intrst.setOnClickListener(new View.OnClickListener(){
String IntrstLvl;
@Override
public void onClick(View v){
RatingBar rBar = (RatingBar)nView.findViewById(R.id.ratingStar);
IntrstLvl = Integer.toString(rBar.getNumStars());
addData(IntrstLvl);
dilog.dismiss();
Log.d(TAG,"Dismissed");
}
});
每当我在Save_Intrst中选择“保存”时,无论我选择什么,都会保存5星。 我对Android开发还是相当陌生,现在已经使用Java编码了。
这只是项目代码的一小段,我相信就足够了,它显示了我的“提交”按钮,“提交”按钮将启动一个对话框,该对话框将在图像中未显示的图像(ImgForm)中显示该图像。但这不是问题,长按后将启动另一个对话框,该对话框具有5星级评分栏和“保存”按钮,此对话框用于在用户完成之前的要求后进行评分。 不论插入了什么内容,即使将应用程序重新安装到设备上后,评分也始终会保存为“ 5”。
getNumStars()
会告诉您显示的最大星星数,并且始终如您所定义的那样为5。 如果需要实际选择的评级,则需要getRating()
。 请参阅本文档 。
您需要使用rBar.getRating()
RatingBar rBar = (RatingBar)nView.findViewById(R.id.ratingStar);
IntrstLvl = Integer.toString(rBar.getRating());
https://developer.android.com/reference/android/widget/RatingBar.html
您正在调用getNumStars()
,它根据文档“返回显示的星星数”。 这表示用户可以选择的星总数。 相反,您应该检查getRating()
,该getRating()
返回当前选定的星星数。
https://developer.android.com/reference/android/widget/RatingBar.html#getRating()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.