kotlin匿名类访问外部函数



我想调用;gogo(("SettingsActivity类的函数。为什么它不起作用?

我曾经试图访问gogo方法,而没有";这个";,但是随后该方法被简单地取消而没有错误。设置活动.kt:

import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager

class SettingsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.settings_activity)
val pref = PreferenceManager.getDefaultSharedPreferences(this)
val edt = pref.edit()
edt.clear();
edt.commit();
edt.putString("signature", "secretValue");
edt.commit();
supportFragmentManager
.beginTransaction()
.replace(R.id.settings, SettingsFragment())
.commit()
supportActionBar?.setDisplayHomeAsUpEnabled(true)
createListener()
}
private fun createListener() {
var listener =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
Log.v("TTTT","RRRRRRRRRRRRRRRRRRRRRRRR")
this@SettingsActivity.gogo() //tried also: gogo()
}
PreferenceManager.getDefaultSharedPreferences(applicationContext)
.registerOnSharedPreferenceChangeListener(listener)
}
fun gogo(){
Log.v("TTTT","UUUUUUUUUUUU")
Toast.makeText(getApplicationContext(), "LALALA", Toast.LENGTH_LONG).show()
}
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)
}
}
}

将gogo((移动到一个伴随对象。

Kotlin官方文档-配套对象

最新更新