Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 50% výuky zdarma!
Pouze tento týden sleva až 80 % na e-learning týkající se Javy
Discount week - May - 50

Diskuze: Androidx problém nebo nějaká změna u setText?

Aktivity (4)
Avatar
Lukáš Němec:5. ledna 10:59

Ahoj,
po dvou letech jsem oprášil starší Kotlin kód, plně funkční, aplikace je ke stažení na Google play.
Po nainstalování nového Android Studia a všeho co je potřeba a nakopírování kódu (XML a KT souborů z původního projektu) dojde k jeho úspěšné kompilaci, ale po spuštění v emulátoru se nezobrazí vůbec nic.
Postupnou metodou jsem se dopracoval k tomu, že tu apku "shazuje" minimálně tato část kódu:
jmeno_player1­.setText("AAA­AAAAAAA");
Jde o nastavení textu objektu Button.

Nejvýraznější změnou je přechod z původního:
import android.suppor­t.v7.app.AppCom­patActivity
na:
import androidx.appcom­pat.app.AppCom­patActivity

Zkusil jsem: Když smažu drtivou většinu kódu v KT skriptu, tak se alespoň zobrazí layout aktivity.
Pak jsem postupně začal vracet kód do KT skriptu a právě přidáním jmeno_player1­.setText("AAA­AAAAAAA"); jsem opět docílil pádu apky.

Chci docílit: Chci znovu rozběhat původní aplikaci, abych ji mohl dále rozvíjet.

PS. hledám zkušeného experta, který by dokázal příležitostně poradit (zadarmo to nechci)

 
Odpovědět
5. ledna 10:59
Avatar
Milan Suchomel:6. ledna 22:35

Ahoj,
když rozklikneš logcat, mělo by ti to vyhodit tu chybu, podle toho dohledáš. Každopádně v nastavení textu se nic nezměnilo. Zápis v Kotlinu by spíš měl vypadat takhle (to tvoje je spíš syntaxe Javy):

jmeno_play1.text = "AAAAAAAAAA"

bez středníku a přístup přes proměnnou, ale není to chyba

Nejspíš bude problém, že někde máš použitou referenci na staré knihovny android.support místo androidx. Nebo špatná reference na to tlačítko.

1) Jak máš definovaný Button v xml?

<androidx.appcompat.widget.AppCompatButton.. />

nebo

<android.support.v7.widget.AppCompatButton.. />

nebo

<Button.. />

Pokud máš Button definováno druhým způsobem, přepiš na první uvedený. Ale to by ti padlo nejspíš při kompilaci.

2) Jak si získal proměnnou jmeno_player1
přes *.findById(R.id­.XXX)
, kotlinx.andro­id.synthetic nebo přes nějakou bindovací knihovnu?

3) Ještě je možné, že to voláš mimo hlavní vlákno, ale to by ti nefungovalo ani předtím.

Pokud nic nenajdeš, tak pošli část kódu, důležité jsou importy, bind tlačítka, definice v xml a použití. A ten log by se taky hodil :).

 
Nahoru Odpovědět
6. ledna 22:35
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Milan Suchomel
Lukáš Němec:7. ledna 6:33

Ahoj,
díky moc za radu!!!! Nakonec se mi to včera v noci podařilo vyřešit.
PS S tím "AAAA" jsem se to jen pokoušel ladit ... prostě co nejjednodušší test.

Největší problém byl nakonec v následujícím, musel jsem měnit:
z původního:
intent.getStrin­gExtra("JMENO_PLA­YER1")
na
intent.getStrin­gExtra("JMENO_PLA­YER1").toStrin­g()

a z:
var jmena_hracu = intent.getStrin­gArrayExtra("JME­NA_HRACU")
na:
var jmena_hracu = intent.getStrin­gArrayExtra("JME­NA_HRACU") as Array<String>

předtím s tím problém nebyl a fungovalo to. I teď se to zkompilovalo bez problémů, ale aplikace prostě "spadla".

 
Nahoru Odpovědět
7. ledna 6:33
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 3 zpráv z 3.