1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Änderungen im EditText abfangen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von ECS, 18.09.2009.

  1. ECS, 18.09.2009 #1
    ECS

    ECS Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    02.09.2009
    Ich habe folgendes Problem:
    Ein ok-Button soll erst visible wenn im EditText ein Wert eingegeben wurde.
    Ich finde keinen richtigen Listener, für EditText der reagiert, wenn dort ein Wert geändert oder Key gedrückt wird.
    onKey() reagiert nur bei der "Entertaste"

    Was mache ich falsch ?
     
  2. goto, 18.09.2009 #2
    goto

    goto Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    8
    Registriert seit:
    01.05.2009
    Habe das ganze mal getestet, bei mir reagiert onKey() bei jeder Taste (auch bei dem Home und Zurück Button, benötigst also eventuell noch ne Fallunterscheidung)

    main.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <EditText android:id="@+id/edittext"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        />
    <Button android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Ich bin ein Button"
        android:visibility="invisible"
        />
    </LinearLayout>
    Meine Activity subclass:
    Code:
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.Button;
    import android.view.View;
    import android.view.KeyEvent;
    
    public class MainActivity extends Activity implements View.OnKeyListener
    {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        
            EditText edit = (EditText) findViewById(R.id.edittext);
            edit.setOnKeyListener(this);
        }
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            Button button = (Button) findViewById(R.id.button);
            button.setVisibility(0);
            return false;
        }
    }
     
    Zuletzt bearbeitet: 18.09.2009
  3. ECS, 18.09.2009 #3
    ECS

    ECS Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    02.09.2009
    Bei mir geht es auf dem G2 Touch nicht.
    Es reagiert nur auf spezielle Tasten.
     
  4. HannesBauer, 26.09.2009 #4
    HannesBauer

    HannesBauer Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    26.09.2009
    Ich kämpfe gerade mit demselben Problem und habe noch keine Lösung gefunden. Vermutlich muss man die Events über das eingeblendete SoftKeyboard abfangen; sie werden nicht bis zum Druck von ENTER (oder z.B. Backspace) nicht an die EditText-Instanz weitergeleitet.
     
  5. ECS, 26.09.2009 #5
    ECS

    ECS Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    02.09.2009
    Die Lösung ist:

    public class UITest extends Activity implements TextWatcher
    {
    ....

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    ..
    }
    }
     
  6. HannesBauer, 26.09.2009 #6
    HannesBauer

    HannesBauer Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    26.09.2009
    ..funktioniert bestens - vielen Dank!
     
  7. r4in, 27.01.2011 #7
    r4in

    r4in Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    Hi Leute,

    bei mir schmiert die App immer ab sobald ich das Edit auf Veränderung abfrage ab. Hat vielleicht jemand ne Idee? Sinn ist ein Button soll erst erscheinen sobald etwas ins Edit eingetragen wird.

    Code:
    final EditText Stand_scan = (EditText) findViewById(R.id.stand_scannen_edit);
    Stand_scan_var = Stand_scan.getText().toString();
            
    Stand_scan.addTextChangedListener(new TextWatcher() {
    
                public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
    
                public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
    
                public void afterTextChanged(Editable arg0) {
                    OK_Button.setVisibility(View.VISIBLE); // Hier fliegt mir die APP um die Ohren!
                    throw new UnsupportedOperationException("Not supported yet.");
                }
            });
    
    
    
     
  8. r4in, 27.01.2011 #8
    r4in

    r4in Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    So gehts, aber wo da jetzt der großer Unterschied sein soll :blink::blink:

    Code:
    
    final EditText Stand_scan = (EditText) findViewById(R.id.stand_scannen_edit);
            Stand_scan_var = Stand_scan.getText().toString();
    
            TextWatcher textWatcher = new TextWatcher() {
    
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                    
    
                }
                public void afterTextChanged(Editable arg0) {
    
                    OK_Button.setVisibility(View.VISIBLE);
    
                }
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
                };
    
    
            Stand_scan.addTextChangedListener(textWatcher);
    
    
    
     
  9. swordi, 27.01.2011 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ähm ist das jetzt dein ernst?

    in variante 1 wirfst du in jeder textwatcher methode eine exception - ist ja klar, dass dann die app abschmiert, wenn du es so hinschreibst ;) oder check ich da was nicht?
     
  10. ts-apps, 27.01.2011 #10
    ts-apps

    ts-apps Erfahrener Benutzer

    Beiträge:
    194
    Erhaltene Danke:
    39
    Registriert seit:
    27.03.2010
    Lool

    Wo hast das denn bitte gelernt?

    Mein Tipp: Erstmal die Java Grundlagen lernen bevor ihr euch an die App Entwicklung macht. Glaubt mir sobald ihr erst mal die Grundlagen beherrscht werdet ihr deutlich mehr Spaß an der App Entwicklung haben.
     

Diese Seite empfehlen