2016-10-07 1 views
1

Dies ist, was passiert: Aktivität A und B haben eine EditText und beide haben IME_SEARCH. Die Eingabe erfolgt nur über die Soft-Tastatur eines SAMSUNG-Tablets. Auf Aktivität A kann ich die EditText ohne Probleme verwenden. Die Sache ist, dass ich auf Aktivität B keinen Text mit der Rücktaste löschen kann, nachdem ich auf "Leerzeichen" geklickt habe oder wenn ich ein Wort aus den Vorschlägen verwende. Es verhält sich so, als wäre dort kein Text mehr. Wenn ich neue Zeichen eintippe, kann ich sie bis zum Leerzeichen löschen.Android: weiche Tastatur Rücktaste auf EditText funktioniert nicht

wichtige Punkte:

  1. Die Hierarchieansicht, die enthält das EditTexts identisch sind
  2. Der Code, der die IME_SEARCH Verarbeitung (via setOnEditorActionListener) konfiguriert ist identisch
  3. Die TextWatcher beider auch identisch sind
  4. Im Manifest sind beide Aktivitäten mit
    konfiguriert

eingestellt I einen Haltepunkt für das Verfahren beforeTextChanged sowohl TextWatcher. Ich habe ein "Leerzeichen" eingefügt und die Rücktaste gedrückt. Auf der Edittext der Aktivität A wird die Methode ausgelöst, aber auf Aktivität B ist es nicht ausgelöst. Ich kann den Grund dafür nicht sehen, da die Eigenschaften von beiden Edittext identisch konfiguriert sind. Ich versuchte auch, die IME Option zu entfernen, aber das Verhalten behielt das gleiche bei.

Weiß jemand, was passieren könnte?

EDIT 1:

searchTxt.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       if (s.length() == 0) { 
        btnClear.setVisibility(View.GONE); 
       } else{ 
        btnClear.setVisibility(View.VISIBLE); 
       } 
      } 
     }); 

searchTxt.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
      @Override 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
       if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
        buildGrid(); 
        return true; 
       } 
       return false; 
      } 
     }); 

EDIT 2: Die Hierarchie-Layout ist wie folgend.

<LinearLayout 
    ... > 

    <include layout="@layout/title_bar" /> 
    <RelativeLayout 
     ...> 
     <EditText 
      ...> 
+0

Können Sie den Textwatcher teilen? – toshkinl

+0

@toshkinl Sicher, ich habe es gerade hinzugefügt – luizfzs

+0

Scheint gut. "Wort von den Vorschlägen" fügt am Ende Platz hinzu, deshalb kann man nicht löschen, nicht weil es aus den Vorschlägen stammt. Sind Sie sicher, dass zwischen den 2 Layouts und Activities bezüglich EditText keine Unterschiede bestehen? – toshkinl

Antwort

1

Das Problem war, dass aus irgendeinem Grund wurde die Aktivität B dispatchKeyEvent() überschrieben und immer true zurück. Durch das Entfernen wurde das Problem behoben.

Verwandte Themen