Notesblok app

I dette eksempel skal vi lave en notesblok app. Appen skal bestå af et enkelt tekstfelt, hvor brugeren kan skrive tekst. Appen skal gemme teksten til næste gang den åbnes, så brugeren kan fortsætte med at skrive.

 

Sæt Android Studio op med en Empty activity som skabelon

 

I designeren slettes TextViewet, og et scrollView og et MultiTextView indsættes. Du kan selv vælge om det skal være et MultiAutoComplete eller multiline text.

 

I scrollView skal boksen med fillViewport være checked og både linearLayout og dit multiLineTextView skal være sat til match_parent i height.

 

Herefter skal ID i dit textView være sat til noget, der giver mening. I dette eksempel er det “notepadText”.

I textAppearence, kan der ændres hvordan teksten kan se ud.

Hvis man gerne vil have at teksten skal starte i toppen, kan man inde i xml koden tilføje

android:gravity=”top”

Designeren skulle nu gerne se således ud:

Du kan nu teste din app, og se om du kan skrive tekst, og om teksten kan scrolle af skærmen.

 

Når designet er lavet, kan du begynde på java delen. Start med at lave en global variabel til at indeholde dit textView

Initialiser den herefter i onCreate funktionen, under linjen der starter med setContentView.

Dette gøres med findViewById(R.id.<dit id her>)

 

Vi skal nu gøre så appen gæmmer og indlæser teksten, når den startes og stoppes. Dette gøres ved først at lave funktioner til at gømme og indlæse. Herefter skal de to funktioner køres når appen åbnes og lukkes.

 

Vi starter med at gæmte teksten. Til dette, skal vi gæmme teksten i en fil. For at gøre det nemmere for os senere, tilføjer vi en konstant med navnet på filen.

Herefter laver vi en private funktion, der tager en String som parameter, og gæmmer det i filen.

 

Her skal vi bruge noget, der hedder en try-with-resources, så vi skriver følgende:

Android Studio kan her hjælpe os med at tilføje resten ved at trykke Alt+Enter og vælge add ‘catch’ clause(s)

 

Herefter skriver vi outputStream.write(text.getBytes()) under linjen der starter med try.

 

Vi skal nu tilføje en load funktion. Dette er også en private funktion. Denne skal returnere en String, og ikke tage nogen parametre. Vi skal igen bruge en try-with-resources, denne gang med en inputStream:

Vi trykker alt+enter og add ‘catch’ clause, så Android Studio autogenerere noget kode for os.

 

For at læse fra en fil, skal vi gøre lidt mere, end vil skulle da vi ville skrive til den. Vi starter med at lave en lokal variabel, til at indeholde alt den tekst der er i filen. Denne variabel skal laves på en linje over try.

Herefter skal vi inde i try blokken tilføje følgende kode:

Inde i catch FileNotFoundException blokken, skal der tilføjes følgene:

Til sidst skal vi inden funktionen afsluttes skrive return result:

Hele funktionen ser nu således ud:

Vi skal nu gøre sådan at programmet loader teksten, når det starter, og gemmer teksten når det stopper.

For at indlæse teksten når appen starter, skal vi sætte teksten i tekstfeltet til at være resultatet fra loadText

Herefter skal vi gemme teksten når appen stopper. Til dette skal vi bruge en funktion, der minder om onCreate. I android Studio trykkes Ctro + o, herefter tastes onPause, og funktionen vælges på listen. onPause funktionen køres hver gang man går væk fra et view i android. Dette er når man for eksempel går ud af en app, eller skifter til en anden app.

 

I onPause funktionen, skal vi gemme teksten der står i  tekstfeltet i filen. Dette gøres med følgende kode:

Kør appen, og se om den gør hvad den skal.