Text nach Zeitverzögerung einblenden

  • noch mal der code war estwas verrutscht






    ohne OnClick im Layout


    Code
    <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="150dp"
            android:layout_marginBottom="170dp"
            android:text="Bestätigen"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
  • Trotzdem weist er mir noch den Fehler Unresolved reference: textView aus.

    das ist deine nicht vorhandene TextView im layout sagte ich schon das du die nicht meher hast, in deinem ersten Layout war sie drinn.


    "textView" ist deine ID im XML die nicht vorhanden ist.
    wenn alles andere erkannt wird geht bei dier auch Synthetic und lambda exprechen.


    wei ich sagte raus mit dem OnClick aus dem XML und dein Layout ordentlich mit einer Textview

  • Sorry, ja habe ich auch gerade gesehen.
    Ich habe jetzt eine TextView ohne Text erfasst, da ich ja möchte dass er die Nachricht erst ausgibt sobald man auf Bestätigen klickt.
    Final zum Abschluss wäre das nur noch dass er dann "Herzlich willkommen Name!" anzeigt.
    Wo kann ich dieses Herzlich willkommen noch reinschreiben, damit es erst angezeigt wird, sobald man auf Bestätigen gedrückt hat und das Programm die Aufforderung zur Anzeige bekommt?


    Und im besten Fall wäre es dann noch, wenn das Eingabefeld danach verschwindet, das sieht nämlich komisch aus.

  • @stw1912: Sorry nochmal für die Annahme mit Java statt Kotlin. Hatte irgendwie gedacht, dass du als alter C-ler eher Java nimmst. Gib der Sache doch nochmal in Java ne Chance.



    @jogimuc: Muss dir, was die Qualität meines Tipps angeht, an der Stelle etwas widersprechen. Klar, er macht bei Kotlin keinen Sinn...mein Fehler. Was allerdings Java angeht, wäre der für Anfänger Gold wert, denn:
    1. Gibt es genügend einfache Anwendungen, die eben keine Fragmente benötigen.
    2. Einem Anfänger, nachdem er eine leere "Hallo Welt" App ans Laufen gebracht hat, direkt etwas über Fragmente und Co erzählen zu wollen, ist Overkill.


    ...ein Greenhorn sollte da wie folgt lernen:
    -"Ach, ich kann Button dort über eine GUI einen Button in die 'Seite' legen. Seite? Ach, die nennt man hier Activity...ok, geschnallt. Mal starten...cool...da. Nur das Ding macht noch nichts."
    -"Ach, die Seit...die Activities kann man auch im Text editieren. Aber wie kann ich denn hier nun eine Reaktion reinbringen? Hmmm, mal sehen. Oh, gar nicht hier? Ich schreibe also diesen onClick Kram hier zu diesen 'Dingern' und dann muss ich diese Klasse finden..."


    So baut man dann Schritt für Schritt auf. Erst kommt also der WYSIWYG Editor, dann die XML Ansicht, dann geht es von da auf einen ersten Sprung in die Klasse, indem die erste Methode aufgerufen wird, findViewByID wird genutzt, um die Erklärung zu bringen, dass erstmal zugeordnet werden muss, etc. Fragmente stellen sofort Sonderfälle da, denn aus der Sicht der Anfänger wird dort eine Blaupause in eine Blaupause geladen, die dann nur über einen Befehl in einem Befehl aufgerufen werden kann und... 90% aller Anfänger verliert man durch unnötig schwere Einstiege. Wenn sich die ersten Sachen bewegen oder sonst wie reagieren, kann man auf der Welle der Motivation immer noch sagen "by the way: onClick-Listener sollte man eigentlich über den Quellcode statt der Layouts einbinden. Das geht so...und nachdem du das nun kannst, sag ich dir warum - Fragmente sehen so aus, die machen dies und das und man braucht dabei..."
    Ein Anfänger hat dabei ne Journey und kann Schritt für Schritt lernen. Warum also per Zufall drauf hoffen, dass jemand den Overhead bei Java lernt? Stw1912 ist doch das Beispiel. Statt mit Erfolgserlebnis in diesen "...noch 5 Minuten. Ich komme gleich!" Sog zu geraten, stolpert er über viel zu komplizierte einstiege, fragt nachher (sicherlich total angepisst und frustriert) das Netz und dann überlese ich Trottel noch, dass er Kotlin statt Java machen will. Ich würde sagen: Viel zu komplizierter Einstieg, der mit Tretminen übersäht ist, oder?

  • @Paddy was du dich heir angegriffen fühlst verstehe ich nicht.


    Ich habe ihn erklärt das es grundsätzlich zwei arten von klick listner gibt.


    Welche er machen will ist ihm überlassen.


    Mein erster Code war ein klassisches kotlin was er ja auch will mit der dort üblichen Klicklistner in einer lamda variante.
    Ist kurz und knapp braucht den onklick im xml nicht. Kotlin ist halt nun mal kurtz und knapp dafür ist es bekannt und wird auch dafür geliebt.
    Ob es das richtige für ihn ist?


    Dann habe ich ihm zwei ausführliche kotlin Beispiel gegeben.


    Ob jetzt kotlin oder java für ihn besser ist muss er selber entscheiden. War hier auch nicht die Frage.


    Wenn du dir denn Code den er gepostet hat anschaust siehst du wo asas welcher programm Ecke er kommt. Nichts mit oop Programmierung er wird auf der auf der Konsole gearbeitet haben.


    Das hier ist aber oop. Und nicht einfache c Programmierung. Denn das was er gepostet hat war nicht mal c++ nur c in kotlin transferiert.


    Für welche Variante er sich nun entscheiden hat wissen wir noch nicht.


    So in dem Sinne.


    Und rege dich wieder ab.

  • Etwas nochmal eine Zuweisung von listner braucht man stendig. Solte man gleich lernnen. Verstehe nicht warum googel das immer noch drin hat.
    Zb. Du willst den EditText mit einen watcher überwachen und prüfen was der user eingiibt. Das geht mit xml nicht.
    Das einzig was da geht ist der Button click


    Das ist sicher ein Überbleibsel aus android 1.


    Du siehst auch ohne fragmente braucht man listner. Ich persönlich finde das für einen Anfänger schwieriger und unlogisch ist das er einiges im xml machen kann und anderes nicht.
    Für mich macht es Sinn sich gleich an das echte listner Prinzip zu gewöhnen.




    Das wort Fragment habe ich nur benutz um zu sagen das man das alte onClick im xml nicht mehr machen solte. Von mehr war da nie die Rede.

  • @stw1912
    Es wäre nett wenn du nun deinen Code nochmal zeigen könntest damit wir auch wissen für welche Variante du dich entschieden hast.
    Aufgrund deiner letzen Fehlermeldung würde ich denken es ist die erste Kotlin Version. Ohne findviewbyid.


    Hast du es hinbekommen mit dem willkommen und dem unsichtbar werden?

  • Der Code sieht jetzt folgendermaßen aus


    package com.example.JB
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.view.View
    import android.widget.Button
    import android.widget.EditText
    import android.widget.TextView
    class MainActivity : AppCompatActivity() {
    lateinit var btButton : Button
    lateinit var tvText : TextView
    lateinit var edText : EditText
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    btButton = findViewById(R.id.button)
    tvText = findViewById(R.id.textView)
    edText = findViewById(R.id.editText)
    btButton.setOnClickListener(object : View.OnClickListener{
    override fun onClick(v: View?) {
    var st = edText.getText().toString()
    tvText.setText("Hallo "+ st+"! Willkommen!")
    }})
    }
    }Einzig und allein dass das Eingabefeld verschwinden soll und dort die Willkommensnachricht erscheinen soll bin ich noch am tüfteln.Hab zwar die Position verändert bekommen, aber das überlappt quasi über dem Eingabefeld unter dem Bestätigen Button und sieht etwas blöd aus. Aber ich probiere es weiter, vielen Dank für eure Hilfe.Jetzt komme ich so langsam auch wieder in die Materie rein.

  • @Paddy Sorry kam mir so vor als ob. Gut Sorry Schwamm drüber.


    @stw1912
    Gehe ich richtig das du beides textView und EditText an der selben stell im Layout hast.


    Wenn zwei Objekte am gleichen Platz sind sollte eines immer unsichtbar sein. Das unsichtbare sollte schon im Layout mit der Eigenschaft unsichtbar versehen werden.


    android:visibility="invisible"


    Im Code Java oder Kotlinmachst du das eine unsichtbar und das andere sichtbar.


    Es gibt drei Attribute


    Visible> sichtbar und belegt Platz im Layout
    Invisible > unsichtbar und belegt Platz in Layout
    Gone > unsichtbar und belegt keinen Platz im Layout


    Wenn du nicht klar kommst das zeige nochmal dein layout.


    Was genau willst du austauschen?

  • Nun, nein. Das Eingabefeld für den Namen ist über dem Bestätigen Button. Wenn ich jetzt den Namen eingegeben habe und auf Bestätigen gedrückt habe, soll das Eingabefeld und der Bestätigen-Button verschwinden und dort die Meldung "Willkommen ..." erscheinen. So hab ich mir das vorgestellt.


    Und eine weitere Frage, dazu habe ich leider auch nicht im Internet groß gefunden.
    Die App hat ja auf meinem Emulator kein Appsymbol/-bild. Kann man das irgendwie einfügen?

  • Passe dein Layout richtig an setze die Ankerpunkte sinnvoll.
    ich habe es für dich mal versucht schaue oben layout.


    TextView und EditText solten an der gleichen Stelle sein.



    und verbinde die Views untereinander nicht immer alles nach unten zum Rand.
    Bild oben fest machen Text und Edittext am Bild fest machen. Button am Text festmachen.
    Button unten zum Rand festmachen. Alle Objekte seitlich zum Rand festmachen.



    Zitat

    Die App hat ja auf meinem Emulator kein Appsymbol/-bild. Kann man das irgendwie einfügen?


    das wird im manifest festgelegt du hast bestimmt eines und zwar das Standart Icon.
    suche oder dir etwas oder estelle selber eins .


    manifest
    android:roundIcon="@mipmap/ic_launcher_round"



    https://jgilfelt.github.io/And…00&effects=none&elevate=0

Jetzt mitmachen!

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