Teknologiskolen

Huske app

Målet med dette eksempel, er at lave en app lignene Google Keep. Appen skal indeholde noter med en titel og beskrivelse som det skal være muligt at vise og redigere i.

 

Start med at sætte Android Studio op med en Basic Activity som skabelon.

 

Herefter skal vi tilføje en ny activity til at skrive og redigere i en note. Dette gøres ved at åbne mappen med java, derefter at højreklikke på den af mapperne der ikke er grøn, og trykke new -> activity

Vi skal bruge en Empty Activity. I eksemplet kaldes den EditNote.

 

I designeren til EditNote, skal vi bruge 2 Tekstfelter, titel og note, samt en knap til at bekræfte.

Eksperimenter lidt rundt med layoutet, til du finder noget du kan lide

Herefter kan vi skifte til java dele af edit note. Vi starter som normalt med at lave globale variabler til elementerne og at initialisere dem i onCreate funktionen:

Herefter skal vi lave en save funktion, til at gemme noterne på enheden. Husk tilbage til vores notesblok app. Funktionerne vi skal bruge er næsten de samme.

Forskellen er at denne gang ved vi ikke hvad navnet på filen skal være.

Siden vi både skal gemme titlen og noten, kan navnet på filen vi gemmer være det samme som titlen.

Her er der dog et lille problem. Hvad nu hvis vi gerne vil gemme en fil, der ikke er en note?

Løsningen er at tilføje noget tekst til filnavnet, inden vi gemmer den.

Derfor skal vi bruge en konstant med det vi gerne vil sætte foran navnet på filen. (hold det mindre end 5 bogstaver)

Herefter skal vi skrive en private save funktion, der tager en String som parameter og gemmer noten i en fil med navnet NOTE_FILENAME_PREFIX + titel.

Herefter skal vi gøre sådan at når accept knappen bliver trykket på, gemmes noten, og vi går tilbage til visningen af noterne(som ikke er lavet endnu). Dette gøres med en onClickListener på knappen

Husk på at der i Android studio er en genvej til at lave en onClick listener:

I onClick, skal save funktionen kaldes, hvorefter en funktion kaldet finish skal kaldes. Denne stopper den igangværende activity, og går tilbage til den forrige.

saveNote funktionen kan også tilføjes til onPause, hvis det ønskes at appen skal gemme noten, hvis man skifter app eller modtager et opkald.

 

Herefter kan vi begynde på vores BasicActivity, der skal vise alle noter i appen.

I designeren slettes textViewet, og et scrollView tilføjes. Giv herefter det linearLayout inde i scrollViewet et ID.

Det er alt for nu. Designeren ser ud som følger:

I java koden laver vi vores sædvanlige globale variabel til vores linearLayout:

Herefter laver vi en ny private funktion til at oprette en ny note:

Og tilføjer den til onClickListeneren i voresFloatingActionButton:

Nu mangler vi at kunne vise de noter vi har lavet. Dette skal gøres med en private ny funktion, der skal indlæse alle noter i appen.

addNote er rød, fordi det er en funktion der ikke er lavet endnu. Dette er en funktion, der skal tilføje en note til vores layout, så lad os tilføje den.

addNote skal være en private funktion, der ikke returnerer noget og tager en String som parameter. Den skal til at starte med oprette to TextViews, én til en titel, og én til beskrivelsen. Herefter skal den hente teksten til dem, og putte dem ind i vores layout. Dette gøres med følgene kode:

Herefter skal vi bruge en load funktion. Dette skal være en private funktion, der tager en titel og returnerer indholdet i filen.

Til sidst inden appen kan køres, skal vil tilføje loadAllNotes til onCreate funktionen:

Hvis vi gerne vil have at den skal indlæse all noterne efter hver gang vi har tilføjet en ny note, skal vi tilføje onResume funktionen gennem Ctrl + o og tilføje følgene:

Efter appen er testet, og virker, kan du ændre layoutet af visningen af noterne. Dette gøres i funktionen addNote. Hvis vi for eksempel gerne vil have at titlen er en større skrift, kan vi skrive:

Det er også muligt at bruge ressourcerne i android. På den måde vil man kunne ændre udseendet i indstillingerne senere. Dette kan for eksempel gøres med:

Vi kan nu tilføje funktionalitet, så det er muligt at redigere noter ved at klikke på dem. Dette gøres igen i addNote med koden:

Herefter skal editNote funktionen laves. Den skal være private og tage navnet og beskrivelsen på noten som parameter:

Herefter skal vi tilbage i EditNote aktiviteten, for at tilføje funktionalitet, så den kan modtage informationen omkring navnet og beskrivelsen.

 

Vi skal i onCreate funktionen tilføje kode, så den ser således ud:

Siden vi sletter filen, kommer der ikke til at være to noter, hvis man bare ændrer navnet på en note. Der er dog det problem, at hvis brugeren laver en ny note med den samme titel som en anden, vil den overskrive den anden. Dette kan vi gøre noget ved, ved at åbne et popup vindue, hvis man er ved at overskrive en anden note. Vi tilføjer en ny private funktion, der tester om vi er ved at overskrive, og viser en popup box, hvis vi er.

Herefter skal der ændres lidt i funktionaliteten for når gem knappen klikkes i onCreate funktionen: