Java Klasse

Die zweite essentielle Datei jeder Activity ist die Java Klasse. In unserem Projekt heißt die Datei "MainActivity.java" (Falls diese noch nicht offen ist, lässt sie sich im Projekt Fenster auf der linken Seite finden). Diese Datei enthält den Java Quellcode zur Activity "Main Activity", und es befinden sich schon einige vorgefertigte Programmstrukturen darin:

package com.jonasotto.waehrungsrechner;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Die erste Zeile definiert, zu welcher Applikation die Datei gehört. Hierauf wird in diesem Tutorial nicht weiter eingegangen.

Die folgenden Zeilen, beginnend mit "import ..." sorgen dafür, dass Funktionen, welche von Android bereitgestellt werden, in unserer Datei nutzbar sind. Im Laufe des Tutorials wird es vorkommen, dass du weitere Funktionen importieren musst, dies kannst du tun in dem du auf die Funktion klickst und ALT + ENTER drückst. Du kannst sie auch manuell importieren.

Zu jeder Activity gehört eine Java-Klasse. sie wird durch "class" definiert, und heißt in unserem Fall "MainActivity". Das darauffolgende "extends AppCompatActivity" bedeutet, dass die Klasse "MainActivity" vom Typ "Activity" ist, also einen Teil einer Android App darstellt. ("AppCompat" ist eine Erweiterung von Google/Android, die sicherstellt, dass Systemfunktionen sowohl auf älteren als auch auf neueren Android Versionen korrekt ausgeführt werden.)

Die Klasse enthält bereits eine Methode "onCreate". Der Inhalt der Methode ist an dieser Stelle nicht relevant, wichtig ist nur, dass diese Methode automatisch ausgeführt wird, wenn diese Activity aufgerufen wird.

An dieser Stelle soll noch die Methode "umrechnen" erstellt werden, die im letzten Schritt schon dem "Umrechnen" Button zugewiesen wurde:

public void umrechnen(View view){
}

Im Editor wird die Fehlermeldung ausgegeben, dass "View" nicht bekannt ist, Android Studio bietet aber an, automatisch den entsprechenden import hinzuzufügen.

Zunächst muss auf den eingegebenen Wert zugegriffen werden.

EditText eingabe = (EditText) findViewById(R.id.editTextEingabe);

EditText eingabe ist somit das Objekt, dass das Eingabefeld mit der id "editTextEingabe" repräsentiert. Der eingegebene Text ist nun:

String eingabeWert = eingabe.getText().toString();

Dieser String hat an dieser Stelle einen wert wie "4 USD" oder "3,6 EUR". Dieser muss also aufgeteilt werden, in den Wert, hier als float (Gleitkommazahl), und einen zweiten String, der nur die Währung ("EUR" oder "USD") enthält. Hier wird angenommen, dass alles nach dem Leerzeichen die Währung ist und alles vor dem Leerzeichen der Wert:

String waehrung = eingabeWert.substring(eingabeWert.indexOf(" ") + 1, eingabeWert.length()); //eingegebene Währung
float wert = Float.valueOf(eingabeWert.substring(0, eingabeWert.indexOf(" "))); //eingegebener Wert

Substring

Die Methode "substring" der String Klasse gibt einen neuen String zurück, der ein Teil des ursprünglichen Strings ist.

public String substring(int beginIndex)

or

public String substring(int beginIndex, int endIndex)

String a = "abcdef12d"
String b = a.substring(1, 4); // b ist nun "bcd"
String c = a.substring(3); // c ist nun "def12d"

indexOf

Die Methode "indexOf" gibt die Position eines Zeichens/einer Zeichenkette in einem String zurück.

int indexOf(String str)
String a = "abcdef12d"
int c = a.indexOf("c"); // c ist nun 2
int d = a.indexOf("d"); // d ist 3, da nur das erste Vorkommen beachtet wird
int x = a.indexOf("x"); // x ist nun -1, da in a kein "x" vorkommt

Die Umrechnen-Methode kann nun vervollständigt werden:

TextView ausgabe = (TextView) findViewById(R.id.textViewErgebnis);
if (waehrung.equals("EUR")) { //Eingabe in EUR
    wert = wert * (float) 1.1269; //Umrechnung zu USD
    ausgabe.setText(wert + " USD"); //Ausgabe des Wertes in USD
} else if (waehrung.equals("USD")) { //Eingabe in USD
    wert = wert * (float) 0.887390185; //Umrechnung zu EUR
    ausgabe.setText(wert + " EUR"); //Ausgabe des Wertes in EUR
}

Aufgabe

Modifiziere das Programm so, dass es bei der Eingabe der Währung nicht auf Groß- oder Kleinschreibung ankommt.

Last updated