2014-01-20 6 views
0

활동 대신 PopUpWindow (대화 상자)에서 뒤로 단추 이벤트를 처리하려고하는 문제가 있습니다. 내가 OnKeyListner을 구현 ...하지만 여기 대화 상자에서 활동의 뒤로 단추를 사용하지 않도록 설정하는 방법

를 작동하지 않는 것은 당신은 onKeyDown 이벤트

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     return false; 
    } 
    return super.onKeyDown(keyCode, event); 
    } 

를 오버라이드 (override) 할 필요가 내 PopUpWindow

public class PopUp extends PopupWindow implements OnKeyListener{ 
... 
@Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
    return false; 
} 
+2

무엇이 작동하지 않는다는 뜻입니까? –

+1

어디 setOnKeyListener() 했습니까? – venciallee

+0

이 PopupWindow를 활동에 표시하고 있습니까? 그렇다면, Activity의 onBackPressed() 메소드를 오버라이드하고 처리하고자하는 PopupWindow의 관련 코드를 호출하십시오 ... 여기 super.onBackPressed()를 호출하지 마십시오 –

답변

2

입니다 그리고 당신은에 리스너를 설정해야합니다 당신의 PopupWindow의 콘텐츠보기

PopupWindow.this.getContentView().setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
    return false; 
    } 
}); 

키를 설정해야합니다.

@Override 
public void onBackPressed() { 
    // Do Here what ever you want do on back press; 

} 

일들이 당신을 위해 작동합니다 : 리스너가 수동으로

+1

예 ... 당신의 지적을 친절하게했습니다 + 1 당신을 위해 ... –

+0

방금 ​​내 대답을 업데이 트, 나는 OP가 청취자를 설정하지 않았 생각합니다. – redDragonzz

+0

제안 해 주셔서 감사합니다.하지만 시도했지만, onKeyDown을 재정의 할 수 없습니다. – user3213793

0

그냥이 코드를 넣어. , 특히에 back_pressed에 대한 작업을 수행하려는 경우이 메소드 내부의 코드를 작성하십시오.

0

당신은 당신의 활동 범위에 대한 당신의 PopupWindow의 객체를 생성 까다로운 방법

을 따를 수 있습니다.

을 따를

private boolean actionOnPopupWindow(){ 
    if(isPopupWindowShowing){ 
     localPopup.dismiss(); 
     return false; 
    }else 
     return true; 
} 

이 onBackPress() 활동의 방법에서 팝업 창을 처리 따를 또한 private PopupWindow localPopup;...과 같은

이 popupwindow 처리 한 개인 방법을 만들기 popupwindow 상태를 식별하는 부울 플래그를 만들

@Override 
public void onBackPressed() { 
    if(actionOnPopupWindow() 
     super.onBackPressd(); 
} 
관련 문제