Kotlin Как я могу вызвать функцию расширения - PullRequest
0 голосов
/ 01 июля 2018

Я хочу вызвать функцию расширения из класса MainActivity в другом классе. Как я могу это сделать?

object MainActivity : AppCompatActivity() {

val StringBuilder.readHistory: StringBuilder
    get() {
        val temp = this@readHistory
        temp.setLength(0)
        try {
            val file = InputStreamReader(MainActivity.openFileInput(MainActivity.getString(R.string.dosyaadı)))
            val br = BufferedReader(file)
            var line = br.readLine()
            while (line != null) {
                temp.append(line + "\n")
                line = br.readLine()
            }
            br.close()
            file.close()
} catch (e: Exception) {
            e.printStackTrace()
        }
        return temp
    }

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Расширения членов видны только внутри класса, в котором они объявлены. Однако вы можете разместить свою функцию расширения вне класса, чтобы иметь возможность импортировать и использовать ее где-либо еще.

0 голосов
/ 01 июля 2018

Вы не можете вызывать это вне класса, потому что он вложен в этот класс и, следовательно, применяется только к этой области.

Сделать свойство расширения на верхнем уровне (переместить его за пределы класса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...