Teknologiskolen

String Reverser

I dette eksempel, skal vi lave en app, der kan vende noget tekst.

 

Sæt et projekt op, med en Empty Activity som skabelon. (følg “opsætning af projekt”, hvis du ikke ved hvordan du gør)

 

Appen skal gøre brug af et tekst felt og en knap, der vender den tekst der er skrevet ind i feltet, når den bliver trykket på.

 

Start med at fjerne det TextView der som standard er i designeren.

 

Herefter skal en knap og et tekstfelt tilføjes. Du kan selv beslutte hvilket tekstfelt, I eksemplet bruges et AutoCompleteTextView.

 

Når de to ting er tilføjet, skal deres constraints ændres, så de bliver strukket ud til at fylde hele skærmen i deres bredde. Dette gøres i Højre side under attributes.

Når dette er gjort, skal appen gerne se ud som tilsvarene:

Herefter skal tekstfeltet og knappen gives et ID, og teksten skal ændres.

I eksemplet hedder knappen textReverserButton, og tekst feltet hedder textFieldToReverse.

Designeren skulle nu gerne se sådan ud:

Herefter kan der skiftes til java koden.

I toppen, før onCreate funktionen, men efter class, definerer vi to globale variabler, der kommer til at indeholde knappen og tekstfeltet.

I onCreate funktionen, efter linjen, der starter medsetContentView, instantierer (opretter) vi se to variabler ved at bruge funktionen findViewById():

Når dette er klarret, skal vi bruge en funktion, der kan tage noget tekst og vende det.

Derfor laver vi en ny private funktion efter onCreate, der returnerer en String, og tager en String som parameter.

Lige nu, gør denne funktion ikke andet end at give det tekst tilbage, som den modtog, så vi kommer tilbage til den senere.

 

Først vil vi gerne gøre sådan at funktionen kaldes når knappen trykkes på.

Dette gøres ved inde i onCreate at skrive flipperButton.setOnClickListener(new View.OnClickListener() { …});

Her hjælper Android studio rimelig meget, med at skrive noget kode for os, så i stedet for at kopire koden, kan du bruge den hjælpemeny der kommer frem i AndroidStudio:

Start med at skrive navnet på din knap og tryk enter, når den vises i menuen:

Skriv et punktum, og begynd at skrive setOnClickListener og tryk enter når den kommer frem i menuen:

Herefter kan du begynde at skrive new OnClickListener, og følgende menu skulle vises:

 

Tryk enter, og Android studio skulle autogenerere noget kode for dig.

 

I onClick funktionen, der nu er blevet lavet, skriver vi den kode, der skal køres når knappen trykkes på. I dette tilfælde vil vi gerne læse teksten fra tekstfeltet, vende den rundt, og sætte teksten i tekstfeltet til den vendte tekst.

Hele dette kan gøres i en linje på følgene måde:

Hvis vi tygger os igennem linje 23, sætter den teksten i textFlipperField til at være resultatet af reverse funktionen med teksten fra textFlipperField (som String) som parameter.

 

Men vores reverse funktion gør jo ikke noget endnu!

Det er nu op til dig at få reverse funktionen til at virke som den skal. Appen kan testes ved at trykke på play knappen i toppen af skærmen, så du kan teste hvordan din reverse funktion virker.

(HINT: prøv at skrive return “ ”+text; i stedet for return text;)

(HINT HINT: Det kommer til at fylde mere end en enkelt linje og man skal bruge en lokal variabel)

(HINT HINT HINT: en string indeholder en funktion kaldet charAt() og en String kan konverteres til et char array med toCharArray())

Er det for svært at lave, står løsningen længere nede, men giv det lige et par forsøg først.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

For at få reverse til at vende den tekst den modtager, kan vi enten bruge text.charAt() eller text.toCharArray() dette eksempel bruger toCharArray()

 

Vi starter med at lave en lokal variabel af typen String, med navnet result. Vi sætter den til at være lig med “”.

Herefter skriver vi iter og trykker enter. Dette autogenerer en for each loop i Android Studio.

Vi skriver text.toCharArray() og trykker enter så der ikke længere er en rød firkant herefter trykker vi enter igen, for at bekræfte at c er et OK navn til den char variabel der trækkes ud af arrayet.

I for loopet skriver vi herefter result = c+result;

Til sidst skriver vi return result efter for loopet.

Hele java filen ser nu sådan ud:

Appen skulle nu gerne køre og vende teksten frem og tilbage.

Appen kan med andre knapper, der gør andre ting ved teksten, for eksempel krypterer beskeden ved at flytte bogstaverne rundt på en eller anden speciel måde, og en anden knap, der rykker dem tilbage.

Eller måske oversætter teksten til røversprog, der fungerer ved at man laver skriver alle konsonanter to gange med et o imellem, og lader alle vokaler stå. “Bukser” bliver således til “Bobukoksoseror”

Det kan også lade sig gøre at flytte rundt hele ord i stedet for bogstaver. “Tekst, der skal vendes” bliver så til “vendes skal der Tekst,”.