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

ViewPager 에 버튼 이벤트 넣을때 각 Fragment 별로 못 주나요?

0 추천
ViewPager를 구현하고,

Activity에서 Fragment 몇개를 스와이프해서 이동하도록 만들었습니다.

 
이제 Button이벤트를 주려고 하는데요.

layout에서 버튼에 android:onClick="mOnClick" 이벤트를 주고

Activity.java(ViewPager 생성하는곳)에서 mOnClick 이벤트를 만들어서 사용하면 잘 되는데,

페이지가 여러개 이다 보니 Activity.java 파일이 너무 지저분해질거 같아요..

ViewPager로 구성된 Fragment에 버튼이벤트를 Fragment별로 주는 방법은 없나요?
시험모드 (970 포인트) 님이 2014년 12월 30일 질문
악 두분다 죄송합니다. 제 Adapter 소스에 문제가 있었네요..
ㅠㅠ...
Adapter에서 layout만 변경을 하도록 되어 있어서,,,
그 부분을 Fragment 변경하도록 하니까 버튼 잘 먹네요 ...;;

2개의 답변

+2 추천
 
채택된 답변
fragment 의 xml 에서 android:onClick 지정한게 Activity 가 받는가보군요?

저는 xml의 onClick 자체를 안써서 이부분은 잘 모르지만...

xml에서 onClick 으로 사용하시지 마시구요.

Button에 id 를 할당하고

fragment 에서 findViewById 로 버튼을 잡아서 setOnClickListener(this) 로 처리하세요.
Brann (1,320 포인트) 님이 2014년 12월 30일 답변
시험모드님이 2014년 12월 31일 채택됨
답변해주셔서 감사합니다..그런데 위에 달았듯이
이 방법은 ViewPager 내부에 들어가는 Fragment에서는 동작하지 않더라구요..
혹시 다른 방법 알고 계실까요?ㅠㅠ
+1 추천
fragment에서는 레이아웃에서 버튼이벤트 생성하지 마시고

fragment 클래스에서 선언하세요.

 

해당 fragment의 onCreateView 에서

Button btnEnter = (Button)v.findViewById(R.id.btnid);

btnEnter.setOnClickListener(this)
또는

btnEnter.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

}

})

이런식으로 구현하시면 됩니다..
이드로이드 (22,930 포인트) 님이 2014년 12월 30일 답변
답변은 감사합니다.
그런데 이 방법은 일반 fragment 에서 사용하는 방법이고..
ViewPager에 사용되는 fragment의 경우에는 이 방법이 먹히지 않더라구요..
...