繁体   English   中英

对话框中的星级不会更改保存的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM