¿Qué tal Fragmento? He inyectado Contexto en Fragmento (con @ActivityContextatributo), ahora necesito Actividad. Por supuesto, conozco getActivity()(Kotlin activity) en el Fragmento, pero ¿está bien la segunda forma o porque tengo Contexto, es mejor usarlo para acceder a la actividad?
Dr.jacky
@ Dr.jacky Creo que puedes hacer el elenco de '(contexto como? Tu actividad)'. Ahora puede acceder a sus métodos de actividad
Gian Gomen
@ siddarth-g, si tiene un problema con referencias no resueltas, le recomiendo crear una nueva pregunta con un MCVE para obtener ayuda.
mfulton26
@ mfulton26 no es un problema de compilación, este @ ActivityName tampoco funcionó para mí en otro proyecto.
@IgorGanapolsky cambia el nombre de la actividad por el nombre de tu actividad -_-
Grecha
1
Si está llamando a Activity.this desde una clase interna, debe poner inner antes de la clase
classMyActivity:MainActivity(){// Call from class itself
val builder =MaterialDialog.Builder(this@MyActivity)
inner classInner{this@MyActivity// Call from the inner class }}
this as MainActivity
¿ Quizás ?MainActivity
, ¿a qué instancia deMainActivity
está conectado (y cómo)? ¿Con qué instancia quieres accederthis
?MainActivity
pero aún se está enviandothis
aMainActivity
? ¿Quizás en una subclase?Respuestas:
Puede obtener una referencia a su
MainActivity
objeto en Kotlin utilizando un archivothis
. p.ej:fuente
@ActivityContext
atributo), ahora necesito Actividad. Por supuesto, conozcogetActivity()
(Kotlinactivity
) en el Fragmento, pero ¿está bien la segunda forma o porque tengo Contexto, es mejor usarlo para acceder a la actividad?Prueba esta etiqueta en su lugar
fuente
Si está llamando a Activity.this desde una clase interna, debe poner inner antes de la clase
fuente
Al igual que lo hace en java para obtener el contexto de actividad como MainActivtiy.this, en kotlin obtendrá el contexto como this @ MainActivity
fuente
getActivity()
equivalente esthis@activity_name
en caso de constructor para materialDialogfuente
Puede obtener el objeto de la actividad de esta manera.
fuente
En Kotlin, debes usar esta forma:
Por ejemplo: debe usarlo si desea definir "Contexto" en MainActivity.kt
¿Por qué? Porque en el lenguaje Kotlin @ tiene un significado "de" como:
Si desea obtener más información, puede buscar el sitio web de Kotlin Language: Esta expresión en Kotlin
@canerkaseler
fuente