Ошибка: (29, 34) Несоответствие типов: предполагаемый тип - String?но редактируемый!ожидалось - PullRequest
0 голосов
/ 23 февраля 2019
package com.example.acer.test

import android.content.Context
import android.content.SharedPreferences
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    private var sharedP: SharedPreferences? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn_add.setOnClickListener {
            sharedP = getSharedPreferences("addData", Context.MODE_PRIVATE)
            var myEditor = sharedP?.edit()
            myEditor?.putString("product_name" , et_productname.text.toString())
            myEditor?.commit()
            Toast.makeText(this@MainActivity, "The product is saved" , Toast.LENGTH_SHORT).show()


        }
        btn_get.setOnClickListener {
            et_getproduct.text = sharedP?.getString("product_name","null")
        }

    }
}

Мне нужно прочитать строку из общих настроек в Kotlin, но она показывает следующую ошибку: Ошибка: (29, 34) Несоответствие типов: выведенный тип - String?но редактируемый!ожидалось

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Вы можете создать метод расширения следующим образом:

fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this)

и затем изменить свой код следующим образом:

btn_get.setOnClickListener {
            et_getproduct.text = sharedP?.getString("product_name","null").toEditable()
        }

Это то, что я использовал, и он прекрасно работает

0 голосов
/ 24 февраля 2019

Эта строка заставляет ваш код не работать.

et_getproduct.text = sharedP?.getString("product_name","null")

Чтобы установить текст для EditText в Android.

btn_get.setOnClickListener {
    val productName = sharedP?.getString("product_name", "null") ?: "null"
    et_getproduct.setText(productName)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...