Kotlin:如何从 RatingBar 中保存值?

Kotlin: How to save values from RatingBar?

我在我的应用程序中创建了一个 RatingBar。它用于对电影进行评级。我想要保存价值。当我登录并转到那个 activity 时,我想看到我评价的那颗星。我很难找到答案,因为它是用 Kotlin 编写的,我是新手。

我搜索了许多其他问题和答案,但没有结果。你能告诉我我的代码需要更改什么吗?

class MovieDetailsActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_movie_details)

        fiveStars()

        val sharedPreference = getPreferences(Context.MODE_PRIVATE)
        val rating = sharedPreference.getFloat("numStars", 0f)
        ratingBar.rating = rating
    }

    private fun fiveStars() {
        val ratingBar = findViewById<RatingBar>(R.id.ratingBar)

         ratingBar.onRatingBarChangeListener = RatingBar.OnRatingBarChangeListener()
         { ratingBar: RatingBar, fl: Float, b: Boolean ->
             val sharedPreference = getSharedPreferences("numStars", Context.MODE_PRIVATE)
             val editor = sharedPreference.edit()

             editor.putFloat("numStars", fl)
             editor.apply()

             Log.d("rate", ratingBar.rating.toString())

         }
    }
}

我尝试了很多东西,但没有任何效果。希望你能帮助我。谢谢!

您似乎使用了两种不同的首选项。

你在这里打电话 getPreferences(Context.MODE_PRIVATE):

val sharedPreference = getPreferences(Context.MODE_PRIVATE)
val rating = sharedPreference.getFloat("numStars", 0f)
ratingBar.rating = rating

这里您使用的是特定的 sharedPreferences:

val sharedPreference = getSharedPreferences("numStars", Context.MODE_PRIVATE)
val editor = sharedPreference.edit()

要么在两种情况下都使用 getPreferences(Context.MODE_PRIVATE),要么在两种情况下都使用 getSharedPreferences("numStars", Context.MODE_PRIVATE)