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

안드로이드 다른클래스 이벤트 호출

0 추천
A클래스에서  a버튼이 있습니다.

B클래스에도 똑같은 a버튼이 있습니다.

 

A클래스에서 만들어놓은 버튼 이벤트를

B클래스에서 가져다 쓸수 있나요?

자바 개념이 없어서 이상하게설명했는데 답변부탁드립니다. ㅠ
루비 (1,040 포인트) 님이 2018년 8월 31일 질문

2개의 답변

+1 추천
두개의 클래스 모두 버튼 이벤트 리스너를 구현했을겁니다.

onClick이라는 녀석인데

버튼을 클릭하면 이 함수가 호출됩니다.

A클래스의 a버튼 onClick 리스너가 있을것이고

B클래스의 a버튼 onClick 리스너가 따로 있을겁니다.

액티비티가 다르니까요

그럼 이 함수 두개에서 같은 내용을 실행해야하는데,

같은 클래스라면 다른 버튼의 onClick 리스너를 호출하는 함수가 따로 존재합니다.

call 뭐시기였는데 까먹었네요

근데 다른 클래스이기때문에 이런식으로 호출이안되기때문에

A클래스나 B클래스에 public static 함수를 하나 만들어줍니다.

예) public static void 함수명() { 블라블라...}

public은 아시다 시피 다른 클래스에 접근 허용하는 키워드고

static은 정적인 변수나 메소드를 선언할 때 사용합니다.

A클래스에서 B클래스 객체를 만들어 호출했다면

B클래스 객체명.함수명 이런식으로 호출가능합니다.

만약 클래스객체를 만들어주지않고 intent로 호출했다면

해당 함수를 B클래스에 선언했다 치고(A클래스여도 상관없습니다)

A클래스에서 a버튼 onClick 리스너에서

B클래스명.함수명으로 호출가능합니다.

B클래스 리스너에서는 함수명으로 호출가능합니다

하지만 static 함수에서 변수를 사용했다면 변수 모두 static으로 만들어줘야합니다.

이유는 static 함수나 변수에대해 검색해보세요!

설명을 이것저것해서 너무 장황하지만

도움이 되셨으면 좋겠넹요
열코 (890 포인트) 님이 2018년 8월 31일 답변
변수를 만약 static으로 바꿀수 없다면
public 함수로 만들고
B클래스 객체를 A클래스 내에 만들어주시고
B클래스.해당함수로 호출하시면됩니다
0 추천
질문의 의도가 A 액티비티에서 버튼 클릭 이벤트에 있는 코드를 B 액티비티에서 같이 쓸 수 있지 않느냐는 것이라면,

제 답변은 다음과 같습니다.

BaseActivity를 하나 만듭니다.

ActivityA extends BaseActivity 이렇게 선언하면,

BaseActivity가 ActivityA의 Super Class가 됩니다.

ActivityA의 ButtonA의 OnClick이 발생했을 때, BaseActivity의 Public Method를 하나 호출합니다.

호출 방법은 super.PublicMethodNameOfBaseClass 입니다.

예를들어 BaseAcitivy에 아래 퍼블릭 메소드를 만듭니다

public void ButtonClick(Button btn, TextView tv) {

    tv.setText(btn.getText().toString();

}

이러면 버튼을 눌렀을 떄, 텍스트뷰에 버튼의 이름이 표시되는 예제가 되겠죠.

BaseActivity를 만드는 이유 중의 하나는 상속받은 Activity들에서 사용되는 공통 기능을 모아 놓는 이유가 있죠.

또는 서랍메뉴 등의 기본 UX를 BaseActivity에서 처리하면, 각 Activity 들은 각자의 기능에 집중하면 됩니다.
Will Kim (43,170 포인트) 님이 2018년 8월 31일 답변
...