Неразрешенная ссылка getValue () в kotlin (Android Studio 3) - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть следующий фрагмент кода для страницы настроек с использованием настроек. Я могу найти правильный ListPreference, я могу установить итоговую строку, но я не могу получить значение из объекта предпочтения. По крайней мере, Android Studio не может найти ссылку на метод getValue ().

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.preference.ListPreference
import android.support.v7.preference.Preference
import android.support.v7.preference.PreferenceFragmentCompat


class SettingsActivity : AppCompatActivity() {

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

        setSupportActionBar(findViewById(R.id.settings_toolbar))
        supportActionBar?.setDisplayHomeAsUpEnabled(true)

        supportFragmentManager
            .beginTransaction()
            .replace(R.id.content_settings, MySettingsFragment())
            .commit()

    }

    class MySettingsFragment : PreferenceFragmentCompat() {
        override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
            setPreferencesFromResource(R.xml.pref_settings, rootKey)
            val pref = findPreference("selected_maptype")
            pref.summary = "This is a summary"
            val current_value = pref.getValue()
        }
    }
}

1 Ответ

0 голосов
/ 13 ноября 2018

getValue() - это метод ListPreference , а не Предпочтение , поэтому вам необходимо разыграть его.

val pref = findPreference("selected_maptype") as ListPreference
val current_value = pref.value

Вы будете использовать pref.value вместо pref.getValue() в Котлине.Kotlin меняет методы установки геттеров на прямое имя.

...