【问题标题】:How would I save the rating with a Shared Preference?如何使用共享首选项保存评分?
【发布时间】:2021-07-17 20:35:41
【问题描述】:

我正在尝试在 AlertDialog 中实现评分栏。我有评级栏工作,但我似乎无法让 SharedPreference 工作以记住预先输入的星级。我应该把 SharedPreference 放在哪里/如何让它工作?

这是评分 AlertDialog 的代码:

 private float rateValue;

  rating.setOnClickListener(clk ->{
           AlertDialog.Builder mBuild = new AlertDialog.Builder(SoccerItemDetailHostActivity.this);
           mBuild.setTitle("Please rate the app");
           View mView = getLayoutInflater().inflate(R.layout.soccerratingbar,null);

           final RatingBar ratebar = (RatingBar)mView.findViewById(R.id.ratingBar);
           ratebar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
               @Override
               public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                   rateValue = rating;
                   Toast.makeText(SoccerItemDetailHostActivity.this, ""+rating, Toast.LENGTH_SHORT).show();
               }
           });

           Button btnSubmit=(Button)mView.findViewById(R.id.btnSubRating);
           btnSubmit.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   Toast.makeText(SoccerItemDetailHostActivity.this, ""+rateValue, Toast.LENGTH_SHORT).show();
               }
           });
           mBuild.setView(mView);
           AlertDialog dialog=mBuild.create();
           dialog.show();

       });

【问题讨论】:

  • 关于 SharedPreference 的代码在哪里?

标签: java android android-studio sharedpreferences


【解决方案1】:

要保存评级,您需要将其保存在您的SharedPreferences 中。在下面的代码中,我将向您展示如何实现这一目标:

RatingBar ratingBar = findViewById(R.id.ratingbar);
        if(getRating(getApplicationContext()) != 0){
            ratingBar.setRating(getRating(getApplicationContext()));
        }
        ratingBar.setOnRatingBarChangeListener((ratingBar1, rating, fromUser) -> {
                setRatingBar(getApplicationContext(),rating);

        });

这里提到的SharedPreferences函数:

public static SharedPreferences prefs(Context context){
        return PreferenceManager.getDefaultSharedPreferences(context);
    }
    public static void setRatingBar(Context context, float Float) {
        prefs(context).edit().putFloat("RatingBar", Float).apply();
    }
    public static float getRating(Context context) {
        return prefs(context).getFloat("RatingBar", 0);
    }

【讨论】:

    【解决方案2】:

    我有评分栏,但我似乎无法让 SharedPreference 工作以记住事先输入的星级。

    嗯,你试过什么?您的代码没有显示任何使用 SharedPreferences 的尝试,因此无法说出您做错了什么。

    我应该把 SharedPreference 放在哪里/如何让它工作?

    您可能会在保存当前评分的对话框中添加一个 onDismissListener。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2019-04-09
      • 2011-12-18
      相关资源
      最近更新 更多