Änderungen im EditText abfangen

  • 9 Antworten
  • Neuester Beitrag
Diskutiere Änderungen im EditText abfangen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
E

ECS

Neues Mitglied
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 ?
 
goto

goto

Ambitioniertes Mitglied
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:
E

ECS

Neues Mitglied
Bei mir geht es auf dem G2 Touch nicht.
Es reagiert nur auf spezielle Tasten.
 
H

HannesBauer

Neues Mitglied
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.
 
E

ECS

Neues Mitglied
Die Lösung ist:

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

public void onTextChanged(CharSequence s, int start, int before, int count) {
..
}
}
 
H

HannesBauer

Neues Mitglied
..funktioniert bestens - vielen Dank!
 
R

r4in

Ambitioniertes Mitglied
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.");
            }
        });
 
R

r4in

Ambitioniertes Mitglied
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);
 
S

swordi

Lexikon
ä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?
 
T

ts-apps

Fortgeschrittenes Mitglied
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.
 
Ähnliche Themen - Änderungen im EditText abfangen Antworten Datum
18
8
10