2016-06-27 4 views
-1

주십시오 만 API에 대한 작업을하다> = 17 내가 나타납니다 감지하고 17 다음 낮은 API에 AutoCompleteTextView에의 드롭 다운의 사라 수있는 방법AutoCompleteTextView에, 드롭 다운, setOnDismissListener, <</p> <p>setOnDismissListener 도움 17 API를

?

+1

에이 코드를 넣어? 너 뭐 해봤 니? 'setOnDismissListener'가 API> = 17에서 작동하지 않는다는 것을 어떻게 알 수 있습니까? 안드로이드 스튜디오 나에게 말했다 때문에 – SunSparc

+1

는 : 전화는 API 레벨 17 (현재 분 15)가 필요합니다 android.widget.AutoCompleteTextView # setOnDismissListener 이하 (Ctrl 키 + F1) – Andreyua

+0

mActvSearchWeb.setOnDismissListener (새 AutoCompleteTextView.OnDismissListener() { 를 @ 재정의 공개 무효 onDismiss() { } }); – Andreyua

답변

0

API 레벨 16 (잘 작동 함)에서 테스트를 마쳤습니다. 그러나 안드로이드 전문가에 대한 질문 : 나는 어쨌든 그리 적절한 방법이라고 생각하고 난 당신의 현명한 조언을 기대 :

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()); 
     } 
    } 
}