相关文章推荐
小胡子的火锅  ·  Android ...·  2 周前    · 
酷酷的鸵鸟  ·  刘建国·  1 年前    · 
失恋的回锅肉  ·  PyQt5 - 知乎·  1 年前    · 

kotlin匿名类访问外部函数

0 人关注

我想调用SettingsActivity类的 "gogo() "函数。为什么不能工作?

我曾经试图在没有 "this "的情况下访问gogo方法,但后来该方法被简单地取消了,没有错误。 SettingsActivity.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)