E quanto ao fragmento? Injetei o Contexto no Fragmento (com @ActivityContextatributo), agora preciso de Atividade. Claro, eu sei sobre getActivity()(Kotlin activity) no fragmento, mas é o segundo caminho certo ou porque eu tenho o Contexto, é melhor usá-lo para acessar a atividade?
precisa saber é o seguinte
@ Dr.jacky eu acho que você pode fazer '(contexto como? YourActivity)' elenco. Agora você pode acessar seus métodos de atividade
Gian Gomen
@ siddarth-g Se você está tendo problemas com referências não resolvidas, recomendo criar uma nova pergunta com um MCVE para obter ajuda.
mfulton26
@ mfulton26 não é problema de compilação, esse @ ActivityName não funcionou para mim em outro projeto também.
@IgorGanapolsky altere o ActivityName para o nome da sua atividade -_-
Grecha
1
Se você estiver chamando Activity.this de uma classe interna, precisará colocar inner antes da classe
classMyActivity:MainActivity(){// Call from class itself
val builder =MaterialDialog.Builder(this@MyActivity)
inner classInner{this@MyActivity// Call from the inner class }}
this as MainActivity
?MainActivity
, a qual instânciaMainActivity
ele está conectado (e como)? Qual instância você deseja acessarthis
?MainActivity
mas ainda lançandothis
aMainActivity
? Em uma subclasse, talvez?Respostas:
Você pode obter uma referência ao seu
MainActivity
objeto no Kotlin usando um qualificadothis
. por exemplo:fonte
@ActivityContext
atributo), agora preciso de Atividade. Claro, eu sei sobregetActivity()
(Kotlinactivity
) no fragmento, mas é o segundo caminho certo ou porque eu tenho o Contexto, é melhor usá-lo para acessar a atividade?Experimente este marcador
fonte
Se você estiver chamando Activity.this de uma classe interna, precisará colocar inner antes da classe
fonte
Assim como você faz em java para obter o contexto de atividade como MainActivtiy.this, no kotlin, você obtém o contexto como @ MainActivity
fonte
getActivity()
equivalente éthis@activity_name
no caso de construtor para materialDialogfonte
Você pode obter o objeto de atividade como este.
fonte
No Kotlin, você deve usar esta maneira:
Por exemplo: você deve usá-lo se desejar definir "Contexto" em MainActivity.kt
Por quê? Porque na linguagem Kotlin @ significa "de" como:
Se você quiser obter mais informações, consulte o site da Kotlin Language: This Expression in Kotlin
@canerkaseler
fonte