마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

하나의 커스텀다이얼로그를 여러곳의 엑티비티에서 사용하려면..

0 추천
안녕하세요.

 

커스텀다이얼로그를 하나 만들어놓은것을 여러군데의 엑티비티에서 사용하려면

 

어찌해야 될까요?

 

그때그때 객체생성해서 만드는것은 코딩량으로만 봐도 비효율적일거 같아..

 

어디 다른 패키지의 클래스에 static으로 빼놓고 쓸때마다 호출해서 쓰려고 하는데..

 

구성이 잘 안되네요?

 

지금 제가 시도하는 방법이 맞긴 한건가요?
갸아악 (21,260 포인트) 님이 2013년 4월 8일 질문

3개의 답변

0 추천
 
채택된 답변
자주쓰는 커스톰 다이얼로그나 여러 액티비티에서 자주 써야 되는 중요 변수들은

static으로 쓰지 말고 ...

 

공통 전역 어플리케이션 액티비티를 만들어서 그 안에 쑤셔 넣으면 편합니다.

 

class AplicationActivity extends Application{

public void setCustomDialog(콜백인터페이스리스너 listner){

     if(listner!=null) listner.콜백메소드();

}

 

}

 

그리고 다른 액티비티나 클래스에서 써먹을때에는

AplicationActivity aActivity = (AplicationActivity)this.getApplicationContext();

aActivity.setCustomDialog(new 콜백인터페이스리스너 (

            @오버라이드

             public void 콜백메소드(){

 

              }

));
ankarkied (3,210 포인트) 님이 2013년 4월 8일 답변
갸아악님이 2013년 4월 10일 채택됨
이 방법을 이해할수가 없습니다.;;;
커스텀다이얼로그를 구현하는 부분이 어플리케이션 부분에서 구현을 하고,
사용하는 엑티비티나 클래스에서 호출을 해야되는거 아닌가요?

그런데 말씀하신 코드는 리스너 형식으로
사용해야되는 엑티비티나 클래스에서 오히려 오버라이딩을 하고 있는데
제가 이해를 못하는건지;;

혹시 예제 있으신지요;;
맞아요... 위에 코드가 공통클래스고
밑에 코드가, 다른 액티비티에서 공통클래스 내에 메소드 호출...

리스너는 그냥 다이얼로그 확인,취소 버튼에 대한 이벤트를
콜백형태로 ... 호출을 한 클래스에서 finish()나 기타 처리등을 위해
넣은거구요....

그러니까 커스톰다이얼로그에서 클릭이벤트 발생시..
이벤트 처리를 콜백리스너로 메인으로 받아와서 거기서
해당 이벤트 처리...
그렇다면 커스텀다이얼로그의 상세구현처리는 위에(어플리케이션)클레스에서 처리 다 하고 아래(사용할 엑티비티)에서 호출해서 처리하는거에여?
콜백 인터페이스는 이벤트 처리를 위한거구여?
제발..
네... 저는 그렇게 쓰고 있어용
그밖에 여러 액티비티에서 공통적으로 써야되는 전역변수같은것도
static으로 안쓰고 (어플리케이션)클래스 내에 선언해서 쓰구있어요..
콜백인터페이스는 다이얼로그 내에 버튼이나 이벤트 처리용....
다른 방법도 있겠지만 전 이게 편하고 깔끔해요...
그럼 현재 메서드가 set커스텀다이얼로그잖아요.
그럼 show해주는 메서드도 따로 구현해주고
aActivity.showCustomDialog();
이런식으로 사용하면 되는건가요?
닫을때는 닫는거 어플리케이션 엑티비티에 구현하고
aActivity.dissmissCustomDialog();
이런식으로...
하면 되는건가요?
제발...장어님
낚시인가 ....;;
왠지 다 알면서 물어보는 거 같은 ㅠㅠ
show는 그대로 하고 닫는거는 그냥 닫기 버튼에 dismiss()줘도 되고
커스톰이면 인플레이트하거 setView(view)  뷰형태로 넣고,
뷰안에서 버튼들 이벤트 처리하거나...
.온파지티브랑 .온네가티브로 디폴트 버튼 긁어와서
각 각 버튼안에 콜백함수 호출하거나 ...
방법이야 그때그때 상황에 맞게 해야지요....
낚인거 같은 느낌이 드네 ;;;;;
감사합니다~장어님!
닉네임 귀엽네여 ㅎㅎ
0 추천
생성하는 부분을 따로 메소드로 만들어서 뺴주고

필요할떄마다 호출하겠습니다 ....
쿨러 (2,790 포인트) 님이 2013년 4월 8일 답변
잘 이해가 되지 않습니다..
예를들어 4개의 엑티비티에서 공통으로 사용해야 하는 다이얼로그라 치면
어디 부분에 메소드로 따로 빼줘야되는건지요?
그리고 호출할때 파라미터로 엑티비티나 컨텍스트를 넘겨야 할거 같은데..
죄송하지만 조금 더 디테일한 가르침 부탁드립니다.
음 그러니까

public AlertDialog showDialog( Context con)
    {
        AlertDialog.Builder  dialog = new AlertDialog.Builder(con);
        View v = LayoutInflater.from(con).inflate(R.id.layout, null);
        dialog.setView(v);
        return dialog.show();
    }

대충 이런식이죠...
커스텀 다이얼로그면 이렇게 해두고 만약 다이얼로그의 레이아웃이 여러개면 따로 인자값에 View를 넣어주셔도 되고요
저렇게 구성된 메서드를 아애 다른 클래스에 빼놓고 static으로 호출해서 사용할 순 없나요?
static으로 선언해서
제가 static으로 선언해서 사용하려고 하니,
onClickListener 이벤트처리를 할수가 없더라구요.
그것도 그냥 메소드의 인자에
onClickListener 를 넣어서 실행시키면되죠...
아....ㅇㅇ;;
해보겠습니다 감사감사;;
0 추천
천도복숭아 (6,080 포인트) 님이 2013년 4월 8일 답변
...