programing

대화 상자에서 뒤로 버튼을 처리하는 방법은 무엇입니까?

nasanasas 2020. 9. 6. 10:08
반응형

대화 상자에서 뒤로 버튼을 처리하는 방법은 무엇입니까?


버튼을 누르면 확인 및 취소 버튼이있는 대화 상자가 열리는 응용 프로그램을 개발 중입니다.

잘 작동합니다.

사용자가 뒤로 버튼을 누르면 다음과 같이 처리합니다.

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
    {

    }
 return super.onKeyDown(keyCode, event);
}

그러나 위의 메서드는 호출되지 않습니다. 어떻게 처리 할 수 ​​있습니까?


dialog.setOnKeyListener(new Dialog.OnKeyListener() {

            @Override
            public boolean onKey(DialogInterface arg0, int keyCode,
                    KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    finish();
                    dialog.dismiss();
                }
                return true;
            }
        });

대화 상자를 만들 때 OnCancelListener를 설정하려는 것 같습니다. 다음과 같이 보입니다.

dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {         
    @Override
    public void onCancel(DialogInterface dialog) {
        //do whatever you want the back key to do
    }
});

OnCancel메서드 를 재정의해야합니다 . 이 메서드는 뒤로 키 누름을 호출합니다. 나에게 완벽하게 작동하는 코드가 있습니다.

 AlertDialog alertDialog;

    alertDialog.setOnCancelListener(new OnCancelListener() 
    {                   
           @Override
            public void onCancel(DialogInterface dialog) 
             {
               // TODO Auto-generated method stub

                    dialog.dismiss();                           

            }
}); 

이것이 당신에게 도움이되기를 바라며, 그것이 당신에게 도움이된다면 그것을 받아들이십시오.

감사..


이 시도

 new AlertDialog.Builder(this).setOnKeyListener(new DialogInterface.OnKeyListener() {

                        @Override
                        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {

                            if(keyCode == KeyEvent.KEYCODE_BACK){
                                Logger.d(TAG, "--------- Do Something -----------");
                                return true;
                            }
                            return false;


                        }
                    })

Dialog가 열리면 창이 Dialog로 이동하기 때문입니다. 이제 key대화 를 처리 해야합니다.


If you are using a DialogFragment, from what I can tell the right way to do it is to override onCancel()

I noticed setOnCancelListener does not work, and setOnKeyListener works, but for me has the fun side effect that it swallows all keys if your dialog has an edit text.


This code works:

    Dialog dlg = new Dialog(thisAct, R.style.DialogTheme);
    dlg.setContentView(view);
    dlg.setCancelable(false);
    dlg.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    dlg.setOnKeyListener((arg0, keyCode, event) -> {
        Timber.d("onKey(%d)", keyCode);
        //{home intercepting
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {
            Timber.i("HOME pressed");
            return true;
        }

        return true;
    });
    dlg.show();

참고URL : https://stackoverflow.com/questions/10346011/how-to-handle-back-button-with-in-the-dialog

반응형