01 Feb

Wie du in einer App das aktuelle Datum anzeigen kannst (Android App Tutorial)

In diesem Android Studio Tutorial zeige ich, wie du das aktuelle Datum in einer App anzeigen kannst. Der Einfachheit halber wieder nach dem Klick auf einen Button.

 

Wie du in einer App das aktuelle Datum anzeigen kannst

Grundsätzliches zur App

Bei dieser App (genannt AktuellesDatum) habe ich mich wieder für API 16 (Android 4.1, Jelly Bean) und eine „Empty Activity“ entschieden.

Erneut ist der Aufbau simpel und soll nur die eine Funktion (aktelles Datum nach Buttonklick) zeigen. Sichtbar sind lediglich zwei TextViews und ein Button. Okay, ein TextView. Erst durch Drücken des Buttons wird das Datum im zweiten TextView angezeigt.

 

Die activity_main.xml

Wir verwenden wieder ein lineares Layout mit vertikaler Ausrichtung. Dort hinein setzen wir zuerst ein TextView.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Welches Datum ist heute?"
    android:paddingLeft="20dp"
    android:paddingTop="20dp"
    android:id="@+id/textView1"/>

Die Werte von paddingLeft/paddingTop sind für ein etwas besseres Layout auf „20dp“ gesetzt. Der Text – „Welches Datum ist heute?“ entspricht der essentiellen Frage unserer App. 😉 Und die ID ist „textView1“, weil wir noch ein zweites TextView verwenden werden.

Aber darum geht es ein Stück weiter unten. Denn das folgende Element ist  zunächst ein Button:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Datum"
    android:id="@+id/button"
    android:layout_gravity="center_horizontal" />

Die Beschriftung „Datum“ ist wenig originell, das ist aber relativ egal. Aus layouttechnischen Gründen ist der Button wieder horizontal zentriert.

Jetzt kommt das zweite TextView:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView2"
    android:paddingTop="20dp"
    android:paddingLeft="20dp" />

In meinem Fall hat es die ID „textView2“, es könnte aber auch einen anderen sinnvollen Namen haben, wie zum Beispiel „hierstehtdasdatum“. 😛 Wieder 20dp Padding für Top und Left.

Design-Ansicht der activity_main.xml: TextView, Button, TextView

Design-Ansicht der activity_main.xml: TextView, Button, (leeres) TextView

 

 

Die MainActivity.java

Wir brauchen zunächst die Variablen button und textview2.

Button button;
TextView textview2;

In der Methode onCreate ergänzen wir die folgenden drei Zeilen

textview2 = (TextView) findViewById(R.id.textView2);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);

und lassen dann mit Klick auf das unterschlängelte „this“ und Alt+Enter die Methode onClick durch Android Studio implementieren. In dieser neuen Methode machen wir jetzt weiter.

Wir kommen nämlich zum Datum. Dafür verwenden wir die Klasse Calendar. Wir erzeugen zunächst eine Instanz und nennen sie in diesem Fall… „kalender“! Clever, hm? 😉

Calendar kalender = Calendar.getInstance();

Würden wir jetzt Calendar direkt nach der Zeit fragen, bekämen wir folgendes ausgegeben:

Ausgabe von Calender.getTime().toString()

Ausgabe von kalender.getTime().toString() in textView2

Wir wollen aber nur das Datum und nicht die aktuelle Zeit plus Zeitzone dazu. Zumindest in diesem Fall. Deshalb benutzen wir zusätzlich die Klasse SimpleDateFormat, erzeugen ein Objekt datumsformat und lassen dieses die Ausgabe von kalender.getTime() formatieren. Schließlich wird der Text von textView2 auf diese formatierte Ausgabe gesetzt.

SimpleDateFormat datumsformat = new SimpleDateFormat("dd.MM.yyyy");
textview2.setText(datumsformat.format(kalender.getTime()));

Das Format „dd.MM.yyyy“ sieht folgendermaßen aus:

Ausgabe im Format "dd.MM.yyyy"

Ausgabe im Format „dd.MM.yyyy“

 

 

Zusammenfassung

Insgesamt sind das, in diesem Fall, 6 Zeilen Code für das aktuelle Datum.

3 Zeilen am Ende von onCreate:

textview2 = (TextView) findViewById(R.id.textView2);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);

3 Zeilen in onClick:

Calendar kalender = Calendar.getInstance();
SimpleDateFormat datumsformat = new SimpleDateFormat("dd.MM.yyyy");
textview2.setText(datumsformat.format(kalender.getTime()));

Ziemlich simpel, oder? 🙂



🙂 Klick hier für Bücher zum Thema Android-Programmierung!* 🙂

5 Gedanken zu „Wie du in einer App das aktuelle Datum anzeigen kannst (Android App Tutorial)

  1. Mit welcher IDE soll das denn funktionieren?
    Android Studio gibt dabei nur unzählählige Fehlermeldungen aus.

    • Interessant wäre jetzt: Welche Fehlermeldungen sind es? Und wie sieht dein Code aus?
      Ich nutze nämlich ebenfalls Android Studio. Und bei mir funktionierte es. Siehe Screenshots. 🙂

  2. Hallo,
    habe das auch mal versucht. Ich habe Android Studio 2.2.3.
    habe den API 16 und eine Empty Activity genommen.

    Hier mal mein Code:

    Die activity_main.xml

    und die MainActivity.java

    package de.sandra.dasaktuelledatum;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    import java.text.SimpleDateFormat;
    import java.util.Calendar;

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button button;
    TextView textview2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    textview2 = (TextView) findViewById(R.id.textView2);
    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(this);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }

    @Override
    public void onClick(View view) {
    Calendar kalender = Calendar.getInstance();
    SimpleDateFormat datumsformat = new SimpleDateFormat(„dd.MM.yyyy“);
    textview2.setText(datumsformat.format(kalender.getTime()));

    }
    }

    Kannst Du mir helfen? Wäre super! Danke!

    • Hallo!
      Grundsätzlich: In solchen Fällen ist es immer hilfreich, wenn man die Fehlermeldungen oder zumindest Beschreibungen der Fehler mitschickt. Das spart dem Gegenüber Zeit bei der Fehlersuche.
      Ich gehe in diesem Fall davon aus, dass deine App beim Starten abstürzt. Der Fehler liegt in der onCreate-Methode. Bei dir sieht sie folgendermaßen aus:

      @Override
      protected void onCreate(Bundle savedInstanceState) {

      textview2 = (TextView) findViewById(R.id.textView2);
      button = (Button) findViewById(R.id.button);
      button.setOnClickListener(this);
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      }

      In manchen Fällen ist die Reihenfolge der einzelnen Code-Bausteine wichtig. So auch hier. Die letzten zwei Zeilen
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      müssen an den Anfang der Methode. Mit ihnen schaffst du gewissermaßen das Grundgerüst. Wenn du dir die onCreate wie eine Wand vorstellst, dann sind diese zwei Zeilen das Mauerwerk. Du musst erst die Mauer hochziehen, bevor du Fenster einsetzen oder Bilder daran hängen kannst. In der Zusammenfassung im Post steht nicht ohne Grund „3 Zeilen am Ende von onCreate“. 😉
      Versuch es mal so und schreib mir, ob es jetzt funktioniert:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      textview2 = (TextView) findViewById(R.id.textView2);
      button = (Button) findViewById(R.id.button);
      button.setOnClickListener(this);
      }

  3. Hallo!
    Habe alles noch mal nachgebaut und die Reihenfolge geändert.
    Jetzt klappt es!
    Danke! Echt cool 🙂

Kommentare sind geschlossen.