Text nach Zeitverzögerung einblenden

  • Hallo zusammen,


    ich bin noch blutiger Anfänger mit Android Studio.
    Ich habe daran Interesse eine App zu programmieren, möchte jetzt erstmal das Grundgerüst aufbauen.
    Den Hintergrund und das Logo habe ich soweit eingefügt bekommen.
    Jetzt würde ich gerne es so einstellen, dass ich den Text "Willkommen" einblenden lasse, nachdem man die App gestartet hat (mit so circa 2/3 Sekunden Zeitverzögerung).


    Den Text an sich habe ich eingefügt bekommen mit Textview, aber wie stelle ich denn da eine Timer ein, oder bin ich in der falschen Funktion?


    MfG

  • Okay, ähm, ich wollte es jetzt so programmieren, dass ich ein Textfeld habe wo man seinen Namen eingibt und dann auf den Button bestätigen klickt und die App den Namen benutzt und Willkommen XY anzeigt.
    Leider bekomme ich gar keine Kette hin.
    Ich benutze dieses Programm zum ersten mal und versuche das mit String aber bekomme es nicht so richtig hin.


    Könnte man mir hier eventuell so ein Beispiel schreiben, wie das aussehen müsste? Im Internet finde ich nicht wirklich was.


    PS: Das ist mit MainActivity.kt (anrdoid: id ... etc.)

  • Das wäre der Quellcode


    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/a1234"



    tools:context=".MainActivity"
    tools:ignore="ExtraText">


    <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/the_jobbook"
    android:textColor="#192211"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_bias="0.497"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


    <ImageView
    android:id="@+id/app_logo"
    android:layout_width="328dp"
    android:layout_height="398dp"
    android:layout_marginStart="50dp"
    android:layout_marginTop="96dp"
    android:layout_marginEnd="50dp"
    android:contentDescription="TODO"
    android:src="@drawable/b1234"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.529"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />



    <EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="168dp"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Gib Deinen Namen ein"
    android:textColor="#000000"
    android:textStyle="bold"
    android:visibility="visible"
    app:layout_constraintBottom_toBottomOf="parent"
    tools:layout_editor_absoluteX="99dp" />


    <androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="left" />


    <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Bestätigen"
    tools:layout_editor_absoluteX="162dp"
    tools:layout_editor_absoluteY="584dp" />









    </androidx.constraintlayout.widget.ConstraintLayout>

  • Mach erstmal aus dem Button ein:
    <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Bestätigen"
    tools:layout_editor_absoluteX="162dp"
    tools:layout_editor_absoluteY="584dp"
    android:onClick="confirmPressed"
    />


    ...in der Klasse der Activity (MainActivity - nicht activity_main.xml) packste dann noch folgendes in die Klasse rein:


    public void confirmPressed(View view){


    }


    Find ich persönlich einfacher als ein "onClick" mit dem du die Länge des onCreate aufbläst. In der Methode kannst du dann die Werte bearbeiten.


    ...da du aber dazu "Quellcode" sagst und oben "Blutiger Anfänger" schreibst, erlaube mir folgende Frage:
    Weißt du denn, wie du die Daten aus dem "EditText" abholst, bzw. kannst du Java?

  • Ich habe früher mal in der Berufsschule ein wenig C++ gelernt, habe dann aber Bankkaufmann gelernt. Demnach sind meine Kenntnisse ein wenig eingerostet. Ich wollte es mir aber wieder gerne aneignen, da mir so etwas früher Spaß gemacht hat. Nur wie gesagt,im Internet findet man nicht allzu viel.


    Demnach würde ich es super finden, wenn ich hier so ein Grundgerüst bekäme wie oben beschrieben.
    Dann könnte ich wieder in die Funktionen einsteigen und mich reinarbeiten.


    Danke schon mal für die Hilfe. Wenn ich es bei MainActivity eingebe meckert er rum dass er das konvertiert haben möchte und dann gibt es einen Error wenn ich das Programm durchlaufen lassen möchte.

  • Hallo

    Zitat

    PS: Das ist mit MainActivity.kt (anrdoid: id ... etc.)

    hieraus schlussfolgere ich das du nicht mit Java sondern mit Kotlin arbeiten willst.



    da braucht man auch nicht mehr ein OnClick in XML Layout.
    Wird da glaube auch nicht mehr Unterstütz.
    Auch braucht man da das FindViewById nicht mehr für diese Aufgabe.



    Kotlin sieht zwar c ähnlicher als Java. Ich würde dir aber empfehlen erstmals Java zu lernen als Kotlin.

  • Erstmals solte geklärt werden was du machen willst java oder Kotlin.
    Mit kotlin bin ich auch noch recht neu.


    Auch in deinem Layout xml hast du noch Ungereimtheiten du hast zb keine ankerpunkte beim Button Gesetz.


    Wenn dir das constrain Layout noch zu schwer ist benutze relativ oder linear.


    Auch ist mir dieser Satz unklar


    Zitat

    Mach erstmal ein aus dem Button ein:
    <Button

    Er setzt dir eine onClick Methode.
    Die in kotlin nicht mehr unterstützt wird.
    Die Anker Punkte vom constrain setzt er auch nicht.


    Wenn kotlin gewünscht ist solltest du daß auch mit angeben. Glaube hier arbeiten die meisten noch mit Java.

  • So langsam gebe ich es auf. Ich möchte dass man in dem Eingabefeld EditText "Geben Sie Ihren Namen ein" den Namen eintippen kann, dann auf den Butto "Bestätigen" drückt und das Programm sich den Namen aus dem Eingabefeld zieht und die Nachricht Willkommen xy! anzeigt.


    Mein Gedankengang war sobald der Besucher den Button Bestätigen drückt er die Nachricht einblendet. Wo ist mein Fehler? PS: Da ich das ganze nochmal bei quasi null starte, bitte ich um etwas Verständnis.


    fun main(args: Array<String>) {
    val userinput = readLine"Geben Sie Ihren Namen ein"()
    if (confirmpressed == true){
    println ("Willkommen!") Da soll eigentlich noch der Nutzername dann stehen, nur weiß ich nicht genau wie der Befehl lautet dass das Programm sich den Namen aus der Eingabe zieht.
    }
    else{
    println("Falsche Eingabe")
    }


    Ich weiß jetzt schon dass das so wohl falsch ist, wie gesagt ich hätte gerne ein Muster um dann mich wieder reinzuüben. Also so ein Programm als Muster. Nur auf Youtube die Tutorials helfen mir nicht so wirklich weiter.

  • Ja jetzt kommst du wenigstens mal mit Code rüber.
    Und man sieht du hast keine Ahnung von Android.



    Denn In Android gibt es keine Main Methode oder Funktion wie es in Kotlin heist.
    Eine Klassen Definition wird du wohl auch nicht haben.
    Android ist OOP . Auch wenn es in Kotlin möglich ist sturuktorit zu scheiben geht das In Andoid aber nicht.



    Dann erstelle doch mal ein neues Projekt in Andoid Studio mit Kotlin. Und schaue wie eine ordentliches Projekt aus schaut.
    Auch mit deinen Println wie es in Dektop Java oder Kotlin üblich ist bringt dir hier nichts.
    Es gibt keine Konsole schwarzes Loch wie auf einen PC. Somit auch keine Ausgabe mit Println. Android ist eine GUI.



    Android ist ein Framework was Objektorient ist. Eine Main Methode gibt se da nicht.



    Was du hier machst ist primitives Java Kotlin auf dem Desktop.


    PS redlLine gibt es auch nicht in Andoid

  • das sollte der kürzeste Code sein der deine Ausgabe macht die anderen Imports habe ich mir gespart

  • Danke auf jeden Fall für die Antworten! Ich gebe es auf. Ich bekomme ja nicht mal dieses Programm zum laufen, wie peinlich.
    Vielleicht bleibe ich lieber beim Bankwesen. Die 8 Jahre wo ich das nicht mehr gemacht habe machen sich bemerkbar. Habe nur noch Fragezeichen im Kopf und das Programm weist mir ständig Fehlermeldungen aus.
    Das Programm zeigt mir ständig bei view und textview Fehler an.
    Ich lasse das jetzt :D
    Danke aber für die Hilfe.


    PS: Ein Kollege hat mir Kotlin empfohlen.

  • ich würde dir Java empfehlen. nicht Kotlin.
    java gibt es auch mehr und bessere tutorial


    so und nun zeige uns deine Mainactivity und dein layout. denn da sind auch noch fehler wie ich schon geschrieben habe.



    Kottlin für einen Anfänger der wahrscheinlich noch nie mit objektorientierte programmierung gearbeitet hat finde ich kein guter Rat.



    Java ist viel ähnlicher zu C als Kotlin.

  • Layout


    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/a1234"



    tools:context=".MainActivity"
    tools:ignore="ExtraText">



    <ImageView
    android:id="@+id/app_logo"
    android:layout_width="331dp"
    android:layout_height="360dp"
    android:layout_marginStart="50dp"
    android:layout_marginTop="32dp"
    android:layout_marginEnd="50dp"
    android:contentDescription="TODO"
    android:src="@drawable/b1234"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.487"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


    <EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="99dp"
    android:layout_marginBottom="270dp"
    android:ems="10"
    android:inputType="text"
    android:text="Gib Deinen Namen ein"
    android:textColor="#000000"
    android:textStyle="bold"
    android:visibility="visible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent" />


    <androidx.constraintlayout.widget.Barrier
    android:id="@+id/barrier"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="left" />


    <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="150dp"
    android:layout_marginBottom="170dp"
    android:onClick="confirmPressed"
    android:text="Bestätigen"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent" />


    </androidx.constraintlayout.widget.ConstraintLayout>


    _____________________________________________________________________________________________________________


    Main Activity


    package com.example.thejobbook


    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import kotlinx.android.synthetic.main.activity_main.*



    class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //OnClickListener button
    button.setOnClickListener(View.OnClickListener {
    textView.text( editText.text.toString())
    })
    }
    }


    Ich hab da keinen Nerv mehr für.
    Das hat früher mir Spaß gemacht, aber anscheinend habe ich so ziemlich alles vergessen und muss bei 0 anfangen.
    Wie gesagt ich möchte einfach das man bei Edit Text seinen namen eingibt, auf den Butto Bestätigen klickt und er die Meldung mit den Namen des Users XY "Willkommen XY!" angibt.
    Wie gesagt wenn ich einen Bezug auf Text View and View beziehen möchte kommen sofort Fehlermeldungen.
    Mir geht aber die Motivation verloren, wenn ich nicht mal so ein simples Programm zum laufen bekomme.
    Wie gesagt, bleibe besser beim Bankwesen :D

  • Ich bin im Moment nicht an einen rechner mit AS nur Handy und da ist code schreiben schlecht. Vielleicht finde ich morgen etwas Zeit dafür..


    Wie schon gesagt versuche es mit Java.
    Da bin auch ich besser. Ist zwar mehr schreibarbeit bei jave aber duch den ausführlichen Code auch besser verständlich als in kotlin.

  • Hallo


    Das es bei dir nicht geht sind erstmal zwei gründe.


    1 in deinen letzten Layout ist keine TextView mehr vorhanden wie im ersten.
    Habe da auch die Ankerpunkte angepasst damit sie nicht hinter dem Bild ist



    2 dem Button du hast zwar richtiger weise die Angelpunkte angepasst.
    Aber der Listner ?



    Prinzipiell gibt es zwei arten zum setzen eines ClickListner. Im Code (Java, Kotlin "XML ist das Layout")
    Erste Variante mit dem setzen der Eigenschaft "OnClick" im Layout XML bein Button.
    Dazu musst du auch die Methode im Qwellcode ob java oder Kotlin hinzufügen.
    Das setzen des Listner brauchst du dann nicht.



    Da es zb. Bei Fragmenten nicht möglich ist die Eigenschaft OnClick im XML zu benutzen. Macht man das nicht mehr. In Kotlin eigentlich sowieso nicht.
    Das war kein guter Tipp von @Paddy



    Eigentlich hatte das auch in der Layout Datei rot unterstrichen sein müssen oder Im Designer mit einen Icon Markiert ein müssen. Was dir sagt das du die Methode noch nicht hast. Die er dir sogar erstellen kann.



    Mein Code sollte eigentlich laufen wenn du nicht den Schalter im XML gesetzt hast. Wenn Ja geht er natürlich nicht.
    Sollte es mit den Synthetic und lambda exprechen bei dir nicht gehen.
    Hier ein ausführlicher Code ist änlich dem üblichen Java Code.


    erstmal das Layout mit OnClick


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!