2016-06-27 6 views
-1

BitteAutoCompleteTextView, DropDown, setOnDismissListener, <17 api

setOnDismissListener helfen ist die Arbeit nur auf API> = 17

Wie ich erscheint erkennen kann und verschwindet von AutoCompleteTextView Dropdowns in API niedriger als 17?

+1

Wie sieht Ihr Code aussehen? Was hast du probiert? Woher wissen Sie, dass 'setOnDismissListener' in API> = 17 nicht funktioniert? – SunSparc

+1

Da Android Studio mir gesagt: Anruf erfordert API-Ebene 17 (Strom min 15): android.widget.AutoCompleteTextView # setOnDismissListener weniger ... (Strg + F1) – Andreyua

+0

mActvSearchWeb.setOnDismissListener (neu AutoCompleteTextView.OnDismissListener() { @ Überschreiben public void onDismiss() { } }); – Andreyua

Antwort

0

Ich wurde auf API Level 16 getestet (funktioniert gut). Aber Frage für Android Guru: Ich denke, dass nicht so richtige Methode sowieso und ich freuen uns auf Ihren klugen Rat:

Diesen Code zu public class CustomAutoCompleteTextView extends AutoCompleteTextView

public void setupActv() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     setOnDismissListener(new OnDismissListener() { 
      @Override 
      public void onDismiss() { 
       Log.d("testThisShit", "on Dismiss"); 
      } 
     }); 
    } else { 
     try { 
      Field popup = AutoCompleteTextView.class.getDeclaredField("mPopup"); 
      popup.setAccessible(true); 
      ListPopupWindow popupWindow = (ListPopupWindow) popup.get(this); 

      popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { 
       @Override 
       public void onDismiss() { 
        Log.d("testThisShit", "on Dismiss < 17"); 
       } 
      }); 

     } catch (NoClassDefFoundError | ClassCastException | NoSuchFieldException | IllegalAccessException e) { 
      Log.d("testThisShit", e.getMessage()); 
     } 
    } 
} 
Verwandte Themen