【问题标题】:How hard is it to store user-inputted data?存储用户输入的数据有多难?
【发布时间】:2021-04-29 16:42:49
【问题描述】:

我有一个应用程序,我最近在我的应用程序中添加了一个 DatePicker,但是每当用户输入日期和时间并保存他们的项目时,当他们返回工作时,工作就消失了,就好像它从未开始一样,这导致我假设它没有被保存在任何地方。

我只是想知道如何将用户输入的数据存储为我的 DatePicker/Spinner 的持久性。

下面是我的日期选择器的 main_layout 代码。

           <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/btn_timePicker"
                    android:text="What's the date?"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/textTime"
                    android:layout_marginTop="20dp"
                    android:textColor="#000000"
                    android:textSize="22sp"
                    android:textStyle="bold"
                    tools:text="@tools:sample/date/ddmmyy"/>





  btn_timePicker.setOnClickListener {
            saveData()
        }

     private fun saveData() {
        val insertedText = btn_timePicker.text.toString()
        textTime.text = insertedText

        val sharedPreferences  = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
        val editor = sharedPreferences.edit()
        editor.apply {
            putString("STRING_KEY", insertedText)
        }.apply()
        Toast.makeText(this@NewsActivity, "Data Saved", Toast.LENGTH_SHORT).show()
    }

    private fun loadData() {
        val sharedPreferences  = getSharedPreferences("sharedPrefs", Context.MODE_PRIVATE)
        val savedString = sharedPreferences.getString("STRING_KEY", null)

        textTime.text = savedString
    }
    

【问题讨论】:

    标签: android android-studio android-emulator android-spinner android-datepicker


    【解决方案1】:
    1. 您可以使用 roomDb 来存储复杂的数据:https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0

    2. 或者你可以使用dataStore来存储简单的数据:https://developer.android.com/codelabs/android-preferences-datastore#0

    【讨论】:

      【解决方案2】:

      一点都不难。 您可以通过多种方式存储用户数据。其中之一是使用SharedPrefrences,您可以了解它here。 另一种方法是将其存储在您可以了解here 的SQLite 数据库中。 您也可以将其存储在存储文件中,但我完全不推荐它。

      【讨论】:

      • 啊,我刚刚编辑了我的帖子以包含我对 SharedPreference 路由的尝试,我尝试了但我收到了一个错误,如此屏幕截图中所示 gyazo.com/612286ea669de58a4fca62b5a0934b6d 它说没有任何函数可以用在 Toast.maketext 下提供的参数,所以我不知道当前的问题是什么
      • 不确定这里是否有人会知道我遇到的错误的解决方案,但这让我有点不知道如何保存输入的数据。
      • 我认为这是我所拥有的上下文,因为“这个”导致了错误。
      • 是的,它是上下文,你在哪里使用这个方法?
      • 我只是这样做@NewsActivity 修复了它,但问题是我的 DatePicker,它仍然不保存用户输入的日期,我已经用更新的代码更新了这篇文章但是我不知道我哪里出错了,但如果你能从上面看到那就完美了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2014-07-30
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2021-07-25
      相关资源
      最近更新 更多