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

ViewPager 하위 xml 에서 버튼같은 것들이 안먹혀요...

0 추천
public class myPagerAdapter extends PagerAdapter{

    private LayoutInflater mInflater;
    
    public myPagerAdapter(Context context) {
        super();
        mInflater = LayoutInflater.from(context);
    }
    
    // PagerAdapter에서 관리할 View 개수를 반환합니다.
    public int getCount() {
        return 4;
    }
	
    // ViewPager에서 사용할 View를 생성하고 등록해줍니다.
    public Object instantiateItem(View pager, int position){
        View v = null;
        
        switch(position){
        case 0:
            v = mInflater.inflate(R.layout.main, null);
            break;
        case 1:
            v = mInflater.inflate(R.layout.layout_two, null);
            break;
        case 2:
            v = mInflater.inflate(R.layout.layout_three, null);
            break;
        case 3:
            v = mInflater.inflate(R.layout.layout_one, null);
            break;
        }
        
        ((ViewPager)pager).addView(v, null);
        
        return v;
    }

	
    // View를 삭제합니다.
    public void destroyItem(View pager, int position, Object view) {
        ((ViewPager)pager).removeView((View)view);
    }
    
    // instantiateItem에서 생성한 객체를 이용할 것인지 여부를 반환합니다.
    public boolean isViewFromObject(View v, Object obj) {
        return v == obj;
    }
}

이와 같이 VIewPager을 했는데 슬라이딩같은 것은 잘되는데 하위 xml 즉 여기선 swich 문에서의 main 혹은 layout_one 등에 들어있는 버튼이 먹히질 않습니다.. 혹시 이건 아닐거 같은데 버튼관련 이벤트도 여기에 같이 넣어야 하나요?? 밑에는 main의 activity 입니다.

public class MainActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// Day 버튼
		ImageButton imageButtonDay = (ImageButton) findViewById(R.id.ibt_Day);
		imageButtonDay.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this, DayActivity.class);
				startActivity(intent);
				overridePendingTransition(0, 0);
			}
		});
	}
}

 

조언좀 부탁드립니다... 

kmg123 (1,080 포인트) 님이 2014년 3월 2일 질문
kmg123님이 2014년 3월 2일 수정

2개의 답변

0 추천
 
채택된 답변

뷰 페이저마다 사용하는 뷰(xml)가 다르기때문에 

평소 메인액티비티에서 쓰던 일반적인 방법으로 사용하면 안되구요

해당 뷰에다가 버튼을 붙여주는 작업을 해야해요

 

제가 사용하는 방법은 메인 액티비티 안에 전역으로 버튼의 클릭리스너를 만들어주고

private static OnClickListener mButtonClick = new OnClickListener(){
  public void onClick(View v){
   switch(v.getId())
   {
   case R.id.button1:
      Toast.makeText(getApplicationContext(), "헐?", Toast.LENGTH_SHORT).show();
    break;
   }
  }
 };

뷰페이저 별 xml 지정해주는 부분에 아래와 같이 연결시켜주면 됩니다.

v.findViewById(R.id.button1).setOnClickListener(mButtonClick);

 

글쓴님의 경우 아래와 같이 버튼을 추가시켜주면 되겟네요

public Object instantiateItem(View pager, int position){

        View v = null;
         
        switch(position){
        case 0:
            v = mInflater.inflate(R.layout.main, null);
            v.findViewById(R.id.button1).setOnClickListener(mButtonClick);
        break;
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 3일 답변
kmg123님이 2014년 11월 27일 채택됨
0 추천
http://arabiannight.tistory.com/53

이곳을 참고 해 보시면 될듯 합니다.

제가 ViewPager 처음 했을때 도움을 많이 받은 블로그 입니다.
카이래이언 (2,700 포인트) 님이 2014년 3월 3일 답변
...