November Black Friday C# týden
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C#

Lekce 6 - Android programování - Dokončení implementace kalkulačky

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Android programování - Implementace Java kódu kalkulačky, jsme rozepsali třídu reprezentující jednoduchou kalkulačku. V dnešním tutoriálu aplikaci dokončíme a nahrajeme ji do telefonu.

Metody operací

Do třídy dodáme i další zbylé metody. Ty budou mít stejný princip. Uloží do privátní proměnné c1 číslo na obrazovce a metodu (číslo 1-4). Také nastaví potřebné řídící proměnné.

secti()

public void secti(View v) {
    c1 = Double.parseDouble(obraz.getText().toString());

    metoda = 1;
    obraz.setText("0");
    prosel = false;
    c1Nastaven = true;

    cislo1.setText(String.valueOf(c1));
    operace.setText("+");
}

odecti()

public void odecti(View v) {
    c1 = Double.parseDouble(obraz.getText().toString());

    metoda = 2;
    obraz.setText("0");
    prosel = false;
    c1Nastaven = true;

    cislo1.setText(String.valueOf(c1));
    operace.setText("-");
}

vynasob()

public void vynasob(View V) {
    c1 = Double.parseDouble(obraz.getText().toString());

    metoda = 3;
    obraz.setText("0");
    prosel = false;
    c1Nastaven = true;

    cislo1.setText(String.valueOf(c1));
    operace.setText("*");
}

vydel()

public void vydel(View V) {
    c1 = Double.parseDouble(obraz.getText().toString());

    metoda = 4;
    obraz.setText("0");
    prosel = false;
    c1Nastaven = true;

    cislo1.setText(String.valueOf(c1));
    operace.setText("/");
}

Metoda pro výpočet

Konečně dodáme i metodu vypocti(). Pokud se metoda nerovná 5, znamená to, že je nastavená a lze načíst do paměti c2. Podle toho, o jakou metodu se jedná, se provede patřičná operace pomocí konstrukce switch. Při dělení vznikají dlouhé řetězce čísel, proto je třeba po počítání zjistit, na jakém místě je desetinná čárka a podle toho zaokrouhlit.

public void vypocti(View v) {
    if (c1Nastaven) {
        if (metoda != 5) {
            c2 = Double.parseDouble(obraz.getText().toString());
            cislo2.setText(String.valueOf(c2));
        }
        switch (metoda) {
            case 1: {
                vys = c1 + c2;
                metoda = 5;
                break;
            }

            case 2: {
                vys = c1 - c2;
                metoda = 5;
                break;
            }

            case 3: {
                vys = c1 * c2;
                metoda = 5;
                break;
            }

            case 4: {

                if (c2 != 0) {
                    vys = c1 / c2;
                    metoda = 5;
                    break;
                } else {
                    Toast.makeText(this, "Nelze dělit nulou!", Toast.LENGTH_LONG).show();
                    vymazVse(v);
                    break;
                }
            }
            case 5: {
                break;
            }
        }

        if (vys == 0) {
            obraz.setText("0");
        } else {
            DecimalFormat df = new DecimalFormat("#.########");
            String vysl = df.format(vys);
            vysl = vysl.replace(",", ".");

            int poz = vysl.indexOf(".");
            if (poz >= 8) {
                Toast.makeText(this, "Byl překročen limit 9 čísel", Toast.LENGTH_LONG).show();
                vymazVse(v);
                return;
            }

            if (vysl.length() >= 10) {
                String substring = vysl.substring(0, 9);
                obraz.setText(substring);
                return;
            } else {
                obraz.setText(vysl);
            }

            c1Nastaven = false;
            prosel = false;
        }
    }
}

Aplikace je hotová. Přejděme k vygenerování .apk souboru, abychom ji mohli vyzkoušet.

Vygenerování .apk souboru

Vygenerování APK

Po kliknutí na Generate Signed APK (viz. Obrázek výše) se nám zobrazí tabulka, ve které klikneme na vytvoření nového klíče a vyplníme tabulku. Může to vypadat takto:

Vytvoření klíče
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Nyní zvolíme OK a máme vytvořený náš první klíč. V předchozí tabulce k němu nastavíme cestu a vyplníme požadované údaje:

Potvrzení vygenerování APK

Po potvrzení stačí akorát vybrat cestu, kam se má naše .apk aplikace vygenerovat. Po vygenerování v Android Studio vyskočí nabídka s možností "show in explorer".

Testování

Díky průběžnému testování při vývoji této aplikace jsem odhalil několik nežádoucích problémů, jako zobrazování čísla x.0 kvůli datovému typu, dále zaokrouhlování na potřebný počet desetinných míst nebo zapsání -0. Také se ukázal problém, při přepisování výsledků, které mají 9 znaků, proto jsem musel upravit podmínky v metodě pro zápis čísla.

Testovat můžeme buď na emulátoru nebo na reálných zařízeních. Návod pro instalaci nejlepšího možného emulátoru je v tutoriálu Android programování - Vývojové prostředí v kapitole Instalace Android Studia, podkapitola Emulátor.

Já však doporučuji z vlastní zkušenosti testování na reálných zařízeních.

Testování aplikací na reálném zařízení

V mobilním zařízení musíme zpřístupnit možnosti vývojáře. Většinou se to dělá v nastavení záložce "Obecné" tím, že najedeme do "Info o telefonu" a vybereme "Softwarové informace". Dále jen 10x klepneme na nabídku "Číslo sestavení". Po chvíli se objeví hláška, že jste se stali vývojářem a v nastavení v kartě Obecné přibude nabídka "Možnosti vývojáře".

Android možnosti vývojáře

Nyní propojíme USB kabelem s PC, zapneme "Možnosti vývojáře" a povolíme Ladění USB. Doporučuji nechat nainstalovat kompletní balíček SW pro dané zařízení. Potom potvrdíme dialogové okno, které v mobilním zařízení vyskočí. Teď můžeme dát v Android Studio Run (zelená šipka nebo Shift + F10).

RunApp

Okno s nabídkou dostupných zařízení potvrdíme a za pár chvil se naše aplikace rozběhne na telefonu. O všem co se v aplikaci děje nás informuje Android DDMS.

Kompletní Java kód včetně jednotlivých XML souborů máte v příloze.

V příští lekci, Android programování - Welcome screen animace kalkulačky, si ukážeme, jak vytvořit jednoduchou úvodní animaci.


 

Stáhnout

Staženo 1337x (652.79 kB)
Aplikace je včetně zdrojových kódů v jazyce Android Java

 

 

Článek pro vás napsal Jiří Frank
Avatar
Jak se ti líbí článek?
5 hlasů
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS
Předchozí článek
Android programování - Implementace Java kódu kalkulačky
Všechny články v sekci
Programování Android aplikací v Javě
Miniatura
Následující článek
Android programování - Welcome screen animace kalkulačky
Aktivity (3)

 

 

Komentáře
Zobrazit starší komentáře (17)

Avatar
Ondrej Elláš:29.11.2016 21:35

V Android Studio som úplný začiatočník. Preto bojujem s každým krokom. Pri kalkulačke som sa dostal až po generovanie APK. Na rozdiel od popisu v článku moje Studio umožňuje aj Build APK. Ten prebehol v poriadku. Keď som zadal Generate Signed APK (build type - release) dostal som nasledovné hlásenie:

Failure: Build failed with an exception.

*What went wrong:
Execution failed for task ´:app:validate­SigningRelease.
Keystore file c:\VeciProAndro­id\PrvniKlicek­.jks not found for signing config 'external Override'

  • Try:

    Run with --stacktrace option to get the stacktrace.

    Run with --info or --debug optin to get more log output.
    Build Failed

Vie mi niekto poradiť kde robím chyby ?

 
Odpovědět
29.11.2016 21:35
Avatar
Ondrej Elláš:30.11.2016 9:57

Po problémoch popísaných v predchádzajúcom príspevku, som vyskúšal najjednoduchšiu aplikáciu Hallo world.
Build APK bol bez problémov úspešný, ale Gererate Signed APK zlyhal presne ako je popísané v predchádzajúcom príspevku.
Robím asi niekde systémovú chybu. Poradími niekdo v čom robím chybu ?

 
Odpovědět
30.11.2016 9:57
Avatar
Tomáš Hůla:31.12.2017 14:17

Když to chci spustit tak mi to píše "Default activity not found".

Editováno 31.12.2017 14:19
 
Odpovědět
31.12.2017 14:17
Avatar
Tomáš Hůla:31.12.2017 16:33

Jaký používáš API?

Zjistil jsem že "ActionBarActivity" je už zastaralý.

 
Odpovědět
31.12.2017 16:33
Avatar
Jaroslav Konečný:21.9.2018 15:14

Na mobilu se mi ta kalkulačka zobrazí, ale to je tak vše. Nejdou mačkat tlačítka a nic to nepíše. Mám pocit, že tu kus kódu chybí.
Kde je kód co má být v onclick?
Podle mě ty metody ZapisCislo, ZapisCarku, VymazJeden atd nejsou z ničeho volané.
Můžete prosím poradit?

 
Odpovědět
21.9.2018 15:14
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Jaroslav Konečný
Matúš Olejník:21.9.2018 16:10

Keď je parametrom tej funkcie View tak môžeš v grafickom editore po kliknutí na Button nastaviť onClick (vyberieš zo zoznamu) alebo priamo v xml pridáš elementu Button

android:onClick="nazovFunkcie"

Ak nie je parametrom funkcie View môžeš v kóde napr. v onCreate metóde nastaviť click listener

button.setOnClickListener(event -> nazovFunkcie())
Editováno 21.9.2018 16:11
Odpovědět
21.9.2018 16:10
/* I am not sure why this works but it fixes the problem */
Avatar
Libor Šimo (libcosenior):24.9.2018 13:20

Ahoj, v článku sa píše: Nyní propojíme USB kabelem s PC a zapneme „Možnosti vývojáře“ a povolíme Ladění USB. Doporučuji nechat nainstalovat kompletní balíček SW pro dané zařízení. Potom potvrdíme dialogové okno, které v mobilu vyskočí.
Mne to ukáže len to v prílohe.
Poradíte?

Odpovědět
24.9.2018 13:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):24.9.2018 14:04

Vyskúšal som Hello World a na už sa mi to s mobilom spárovalo.

Editováno 24.9.2018 14:04
Odpovědět
24.9.2018 14:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
duanin2
Člen
Avatar
duanin2:20. února 15:36

já zkopíruju celek ten kód téhle kalkulačky a ono to nefunguje

 
Odpovědět
20. února 15:36
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na duanin2
David Čápka:15. května 15:06

Ahoj, projekt byl aktualizován na novější verzi.

Odpovědět
15. května 15:06
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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 10 zpráv z 27. Zobrazit vše