我使用“首选项”在设置页面上具有以下代码。我可以找到正确的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()
}
}
}
答案 0 :(得分:0)
getValue()
是ListPreference而非Preference的方法,因此您需要进行强制转换。
val pref = findPreference("selected_maptype") as ListPreference
val current_value = pref.value
您将在Kotlin中使用pref.value
而不是pref.getValue()
。 Kotlin用直接名称更改吸气剂设置器。
答案 1 :(得分:0)
在Kotlin中, getter 和 setter 通常是默认设置的,因此我们不能使用 getter 和 setter 来调用它们功能。
一种简单的访问方式是使用(。)dot 运算符使用直接变量名称。
您可以参考此Kotlin Properties