Kotlin - доступ к виду из класса без активности

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

class Toolbar{
private lateinit var typeface:Typeface;
private lateinit var context:Context
private lateinit var tvToolbar:TextView;

fun MakeToolbar(context:Context, title:String){
    this.context=context
    init();
}

private fun init() {
    typeface= Func.getTypeFace(context)!!

    tvToolbar=((Activity)context).findViewById 

}

проблема в том, что в java я могу легко получить доступ к контексту и использовать findViewById, чтобы получить свое представление. Купить, я не могу сделать это в kotlin, и он не смог найти представление.

Как я могу получить доступ к представлению в классе без активности?

Между java и kotlin нет большой разницы. Вы используете Котлин вот так (контекст как? Активность)?. findViewById(R.id....) Я быстро написал это только по памяти, может быть с некоторой ошибкой... так что на самом деле это то же самое, если эта активность имеет представление во время вызова, она вернет то же самое, что и в java-коде....

Renetik 21.04.2019 07:12

Я просто хочу сказать, что вы очень плохо написали этот класс... Я не знаю, может быть, вам следует спросить или прочитать о kotlin больше... Я могу написать вам, как это должно выглядеть, но это не связано с вашим вопросом

Renetik 21.04.2019 07:16
1
2
1 303
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

tvToolbar=((Activity)context).findViewById действительно ваш код? Если на то пошло, он не будет компилироваться в Kotlin или Java.

Синтаксически правильный способ будет таким:

tvToolbar = (context as Activity).findViewById(R.id.tvToolbar)

Хотя я рекомендую не передавать весь ваш объект активности другому классу. Почему бы вам просто не передать ссылку на ваше представление? И обязательно прочитайте про Слабые ссылки.

спасибо за ваш ответ, это решает мою проблему, но вопрос, этот класс может содержать до 5 представлений, лучше ли передать представление из контекста или получить ссылку из контекста?

Navid Abutorab 21.04.2019 08:12

Это действительно зависит, но, как правило, старайтесь избегать передачи объектов Context и View за пределы вашей активности или фрагмента. Он склонен к MemoryLeak. Вам следует попробовать подход MVP или MVVM.

2hamed 21.04.2019 08:55

@HamedMomeni Могу я поговорить с вами наедине, пожалуйста?

X 47 48 - IR 27.06.2019 21:26

Другие вопросы по теме