Valentínska akcia je tu! Získaj až 80 % extra kreditov ZADARMO na náš interaktívny e-learning. ZISTIŤ VIAC:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia: Spuštění aktivity + data z intentu

Aktivity
Avatar
Jan Balák
Člen
Avatar
Jan Balák:3.3.2019 15:41

Ahoj,
dělám appku, která tahá JSON z webu, zpracovává jej a zobrazuje v listview.
Jelikož začínám, řídil jsem se především tímto tutoriálem:
https://camposha.info/…rlconnection
Potřebuji, aby se po kliknutí na položku listview zobrazila nová aktivita, do které předám detailní data z položky.
Dle následujícího článku jsem tedy zvolil intent:
https://www.itnetwork.cz/…ences-intent
V JSONParser.kt jsem tedy nahradil řádek:
convertView.se­tOnClickListe­ner { Toast.makeTex­t(c,user.getNa­me(),Toast.LEN­GTH_SHORT).show() }
za:
convertView.se­tOnClickListe­ner {
val intent = Intent(this, DetailActivity::clas­s.java)
intent.putExtra("pro­menna1", "hodnota1")
startActivity(in­tent)
}

Jenže mi to hází tyto chyby a nedaří se je odstranit. Už v tom ležím víkend, projito hafo článků a nic:

  • None of the following functions can be called with the arguments supplied: public constructor Intent(p0: Context!, p1: Class<*>!) defined in android.conten­t.Intent public constructor Intent(p0: String!, p1: Uri!) defined in android.conten­t.Intent
  • Unresolved reference: startActivity

Minimálně bych se přimlouval za článek na tomto serveru řešící tuto problematiku (JSON a zpracování) atd. :-)
Díky.

 
Odpovedať
3.3.2019 15:41
Avatar
Odpovedá na Jan Balák
Matúš Olejník:3.3.2019 20:14

Ahoj dlhšie som s Androidom nerobil, ale zbežne po pozretí, keďže tá vnorená trieda MrAdapter v JSONParser neextenduje Activity tak nemôžeš do konštruktora dávať "this" pretože on očakáva to čo ti píše v tej chybe. Rovnako startActivity je tiež metóda zdedená z Activity, preto ju nemôžeš len tak hocikde volať.

Context ti však prichádza ako parameter z konštruktora (neviem ako presne sa to nazýva v Kotline) a to private var c: Context, takže by mohlo stačiť zmeniť tvoj kód na

convertView.setOnClickListener {
    val intent = Intent(c, DetailActivity::class.java)
    intent.putExtra("promenna1", "hodnota1")
    c.startActivity(intent)
}
Akceptované riešenie
+20 Skúseností
+2,50 kreditov
Riešenie problému
Hore Odpovedať
3.3.2019 20:14
/* I am not sure why this works but it fixes the problem */
Avatar
Jan Balák
Člen
Avatar
Jan Balák:4.3.2019 14:49

Super, vše funguje. Díky za vysvětlení.
Jdu se s tím mořit dál :-).

 
Hore Odpovedať
4.3.2019 14:49
Avatar
Odpovedá na Jan Balák
Matúš Olejník:4.3.2019 17:59

Nz, ale mohol si to aspoň označiť ako riešenie tvojho problému :D

Hore Odpovedať
4.3.2019 17:59
/* I am not sure why this works but it fixes the problem */
Avatar
Jan Balák
Člen
Avatar
Odpovedá na Matúš Olejník
Jan Balák:4.3.2019 18:03

Máš to tam. Ještě jsem si na to nezvykl :-).

 
Hore Odpovedať
4.3.2019 18:03
Avatar
Odpovedá na Jan Balák
Matúš Olejník:4.3.2019 18:06

Pohoda díky :D

Hore Odpovedať
4.3.2019 18:06
/* I am not sure why this works but it fixes the problem */
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 6 správy z 6.