A jeśli tego kodu nie ma w środku MainActivity, to z którą instancją MainActivityjest on połączony (i jak)? Do której instancji chcesz uzyskać dostęp this?
skrót klawiszowy
Działający kod Java odwołuje się tylko do działania. To, więc statyczny? Nie jestem pewien.
Bal0r
Czy działający kod Java również znajduje się w całkowicie oddzielnym pliku?
yole
Jak nazywa się ten kod, jeśli nie w MainActivityale nadal rzucając thissię MainActivity? Może w podklasie?
Marc Plano-Lesay
Odpowiedzi:
239
Możesz uzyskać odniesienie do swojego MainActivityobiektu w Kotlinie, używając Qualifiedthis . na przykład:
classMyActivity:MainActivity(){
val builder =MaterialDialog.Builder(this@MyActivity)}
A co z Fragmentem? Wstawiłem Context do fragmentu (z @ActivityContextatrybutem), teraz potrzebuję Aktywności. Oczywiście wiem o getActivity()(Kotlinie activity) we fragmencie, ale czy drugi sposób jest w porządku, czy ponieważ mam Context, lepiej go użyć, aby uzyskać dostęp do aktywności?
Dr Jacky
@ Dr.jacky Myślę, że możesz zrobić obsadę „(kontekst jako? YourActivity)”. Teraz możesz uzyskać dostęp do swoich metod aktywności
Gian Gomen,
@ siddarth-g, jeśli masz problem z nierozwiązanymi odwołaniami, zalecamy utworzenie nowego pytania z MCVE, aby uzyskać pomoc.
mfulton26
@ mfulton26 to problem z brakiem kompilacji ten @ ActivityName nie działa również dla mnie w innym projekcie.
@IgorGanapolsky zmień ActivityName na swoją nazwę aktywności -_-
Grecha
1
Jeśli wywołujesz Activity.this z klasy wewnętrznej, musisz umieścić wewnętrzną przed klasą
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
, to z którą instancjąMainActivity
jest on połączony (i jak)? Do której instancji chcesz uzyskać dostępthis
?MainActivity
ale nadal rzucającthis
sięMainActivity
? Może w podklasie?Odpowiedzi:
Możesz uzyskać odniesienie do swojego
MainActivity
obiektu w Kotlinie, używając Qualifiedthis
. na przykład:źródło
@ActivityContext
atrybutem), teraz potrzebuję Aktywności. Oczywiście wiem ogetActivity()
(Kotlinieactivity
) we fragmencie, ale czy drugi sposób jest w porządku, czy ponieważ mam Context, lepiej go użyć, aby uzyskać dostęp do aktywności?Zamiast tego wypróbuj tę etykietę
źródło
Jeśli wywołujesz Activity.this z klasy wewnętrznej, musisz umieścić wewnętrzną przed klasą
źródło
Tak jak w Javie, aby uzyskać kontekst działania jako MainActivtiy. Tak, w kotlin otrzymasz kontekst jako @ MainActivity
źródło
getActivity()
odpowiednik jestthis@activity_name
w przypadku konstruktora dla materialDialogźródło
Możesz dostać przedmiot takiej działalności.
źródło
W Kotlinie musisz użyć w ten sposób:
Na przykład: Powinieneś go użyć, jeśli chcesz zdefiniować „Context” w MainActivity.kt
Czemu? Ponieważ w języku Kotlin @ oznacza „z”, na przykład:
Jeśli chcesz dowiedzieć się więcej informacji, zajrzyj na stronę internetową języka Kotlin: To wyrażenie w Kotlinie
@canerkaseler
źródło