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

时间:2017-08-10 13:43:51

标签: java android

                // 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”。

3 个答案:

答案 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()