투케이2K

496. (Android/Java) [유틸 파일] radioSelectAlert : 콜백 (callback) 확인 라디오 버튼 아이템 선택 팝업창 호출 실시 본문

Android

496. (Android/Java) [유틸 파일] radioSelectAlert : 콜백 (callback) 확인 라디오 버튼 아이템 선택 팝업창 호출 실시

투케이2K 2023. 2. 22. 04:24

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

    public static class radioSelectAlert {

        // -----------------------------------------

        /* TODO [메소드 호출 방법]
        new C_Ui_View.radioSelectAlert().setCallBack(new C_Ui_View.radioSelectAlert.CallBack() {
            @Override
            public void onMessage(int result) {

            }
        }, A_Intro.this, new String[] {"twok", "투케이"},"알림", "확인", "취소");
        // */

        // -----------------------------------------

        // [포지션 저장 인덱스]
        int index = -1;

        // -----------------------------------------

        // [내부 인터페이스 정의 실시]
        interface CallBack {
            public void onMessage(int result);
        }

        // [전역 변수 선언 실시]
        CallBack callback;

        // [클래스 생성자 초기화 실시]
        public radioSelectAlert() {
            this.callback = null; // [초기화]
        }

        // [콜백 지정 메소드 정의 실시]
        public void setCallBack(CallBack callback, final Context mContext, String item[], String header, String ok, String no) {
            // -----------------------------------------
            this.callback = callback; // [매핑]
            // -----------------------------------------
            // [타이틀 및 내용 표시]
            final String Tittle = String.valueOf(header);
            // -----------------------------------------
            // [버튼 이름 정의]
            String buttonYes = String.valueOf(ok);
            String buttonNo = String.valueOf(no);
            // -----------------------------------------
            // [로직 처리 실시 >> excute 호출]
            try {
                new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        // [AlertDialog 팝업창 생성]
                        new AlertDialog.Builder(mContext)
                                .setTitle(Tittle) //[팝업창 타이틀 지정]
                                //.setIcon(R.drawable.app_icon) //[팝업창 아이콘 지정]
                                //.setMessage(Message) //[팝업창 내용 지정]
                                .setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
                                .setSingleChoiceItems(item, index, new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        index = which;
                                    }
                                })
                                .setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        // -----------------------------------------
                                        // TODO [확인 버튼 클릭 이벤트 처리]
                                        excute(index);
                                        // -----------------------------------------
                                    }
                                })
                                .setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        // -----------------------------------------
                                        // TODO [취소 버튼 클릭 이벤트 처리]
                                        excute(index);
                                        // -----------------------------------------
                                    }
                                })
                                .show();
                    }
                }, 0);
                // -----------------------------------------
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }

        // [콜백 실행 메소드 정의 실시]
        public void excute(int result) {

            // [인풋으로 들어온 데이터를 그대로 CallBack 인터페이스 onMessage 메소드로 전달]
            this.callback.onMessage(result);
        }

    }
 

[결과 출력]

 

 

반응형
Comments