// 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”。
答案 0 :(得分:1)
getNumStars()
将告诉您显示的最大星数,并且在您定义时将始终为5。如果您想要实际选择的评分,则需要getRating()
。请参阅this documentation。
答案 1 :(得分:1)
您需要使用 rBar.getRating()
RatingBar rBar = (RatingBar)nView.findViewById(R.id.ratingStar);
IntrstLvl = Integer.toString(rBar.getRating());
答案 2 :(得分:0)
https://developer.android.com/reference/android/widget/RatingBar.html
您正在调用getNumStars()
根据文档"返回显示的星数。"这意味着用户可以选择的星星总数。您应该检查getRating()
,它会返回当前选定的星数。
https://developer.android.com/reference/android/widget/RatingBar.html#getRating()