Java týden
30 % bodů zdarma na online výuku díky naší Slevové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se Javy.
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.

 
Odpovědět
3.3.2019 15:41
Avatar
Odpovídá 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é řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
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 :-).

 
Nahoru Odpovědět
4.3.2019 14:49
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá 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

Nahoru Odpovědět
4.3.2019 17:59
/* I am not sure why this works but it fixes the problem */
Avatar
Jan Balák
Člen
Avatar
Odpovídá na Matúš Olejník
Jan Balák:4.3.2019 18:03

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

 
Nahoru Odpovědět
4.3.2019 18:03
Avatar
Nahoru Odpovědět
4.3.2019 18:06
/* I am not sure why this works but it fixes the problem */
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.