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

안드로이드 setOnClickListener 를 일반 클래에 정의하려고 하는데 도와주세요~

0 추천

안드로이드 앱 왼쪾화면에 메뉴작업을 하다가 ,  똑같은 반복되는 소스를 따로 모아놓고 사용하고싶어서 아래처럼 생각해보았습니다. 

처음에 소스를 만들었을때는 A클래스에 버튼을 정의하고 버튼을 눌렀을때 동작하는 일반적인 ClickListener 를 달았습니다.

그런데 B클래스에도 똑같은 버튼이 필요하고 똑같은 정의를 해야 될 상황이 생겼습니다..  C, D, E클래스가 계속 생길 예정이라서.. 

그래서 버튼 정의 하는 부분을 따로 모아서 임의한개의 클래스에 모아 놓아야 사용이 편하겠다는 생각이 들어서 아래와 같은 형태로

소스를 작성해봤습니다.

그런데 이렇게 하면  bt_left.setOnClickListener(_activity);  이부분에서 문제가 생기더군요.   menu 클래스가 Activity 가 아니라서

setOnClickListener 를 사용하지 못하는거 같습니다.    버튼 관련된 것들을 액티비티가 아닌 임의의 클래스에 모아서 구성할려면 어떤 방법이 있을런지요?  도움 부탁드리겠습니다~

 

Class A extends Activity{

   MenuClass   menu = null;

   void onCreate(Bundle savedInstanceState) {

         menu = new MenuClass();

         menu.initSlideMenuButtons( this ); 

   }

}

 

 

Class MenuClass {                 // 임의의 클래스에 버튼 관련된 것들을 모아놓고 사용하고 싶은데 setonclicklistener 같은거 사용시문제됨

    public Button bt_left;

    public void initSlideMenuButtons( Activity activity )

    {

         bt_left = (Button) activity.findViewById(R.id.btn_left);

         bt_left.setOnClickListener(_activity);

    }

    @Override
    public void onClick(View v) { // 현재 열려있는 화면을 선택했을 경우는 메뉴만 다시 닫는다.
 
        switch (v.getId()) {
            case R.id.btn_left:
                menuLeftSlideAnimationToggle();
                break;
        }
    }

}

 

익명사용자 님이 2015년 5월 23일 질문

1개의 답변

0 추천
 
채택된 답변
메뉴 슬라이드 때문 인가요?
제일 좋은 방법은 액티비티 하나에 액티비티 이동을 하는게 아니라 화면을 바꿔줘서(fragment) 메뉴 슬라이드를 중복 코딩 안하는게 좋구요
그게 아니라 지금 상황이라면...
메뉴 클래스 생성자에 해당 액티비티의 온클릭리스너를 넘겨서 등록 하시면 될껴 같아요
쿵뿌팬더 (3,440 포인트) 님이 2015년 5월 24일 답변
...