1. 목표
이번엔 단순하게 onClickListener를 이용해서 구현해보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | public class MainActivity extends FragmentActivity { private ImageView btn_red; private ImageView btn_blue; private ImageView btn_yellow; private ImageView btn_green; private ViewPager vp_pager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp_pager = (ViewPager) findViewById(R.id.vp_pager); Fragment[] arrFragmnets = new Fragment[4]; arrFragmnets[0] = new YellowFragment(); arrFragmnets[1] = new RedFragment(); arrFragmnets[2] = new GreenFragment(); arrFragmnets[3] = new BlueFragment(); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), arrFragmnets); vp_pager.setOffscreenPageLimit(4); vp_pager.setAdapter(adapter); btn_blue = (ImageView) findViewById(R.id.btn_blue); btn_red = (ImageView) findViewById(R.id.btn_red); btn_yellow = (ImageView) findViewById(R.id.btn_yellow); btn_green = (ImageView) findViewById(R.id.btn_green); btn_yellow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp_pager.setCurrentItem(0); } }); btn_red.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp_pager.setCurrentItem(1); } }); btn_green.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp_pager.setCurrentItem(2); } }); btn_blue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { vp_pager.setCurrentItem(3); } }); // 여기서 setCurrentItem()가 pager에 연결되어 사용되었다. } } | cs |
이렇게 하게되면 굳이 switch()구문을 이용하지 않아도 구현이 가능합니다. 대신에 arrFragment[] array를 주의해야 합니다.
위의 코드는 자연스럽게 setOnClickListener()를 쓰기 때문에 기본적인 기술만으로 구현이 가능하다는 장점이 있습니다.
하지만 일일이 다 만들어줘야 하기 때문에 Fragment가 많아지면 복잡해진다는 단점이 있습니다. Fragment를 사용할 땐 pager가 잘 쓰입니다. pager는 setCurrentItem() 함수와 같이 현재 Fragment의 정보를 불러오는 기능을 가능하게 해줍니다. Fragment의 정보를 일종의 page처럼 다룹니다.
추가로 레이아웃에선 이런 코드가 있을 수 있습니다.
2. 레이아웃 예시
<fragment android:id="@+id/fragment_row" android:layout_weight="9" android:layout_width="wrap_content" android:layout_height="match_parent" android:name="com.example.keepair.myapplication.RowFragment" tools:layout="@layout/fragment_row"></fragment> | cs |
이 코드는 fragment의 레이아웃을 지정하는 코드입니다. weight가 9로 설정되어 있음을 확인할 수 있습니다. 그리고 fragment에도 id 값을 부여할 수 있습니다.
다음에 이어서 올리겠습니다.
'Java' 카테고리의 다른 글
[android] 구글맵 3 (0) | 2018.02.03 |
---|---|
[android] 구글맵 2 (0) | 2018.02.03 |
[android] 구글맵 1 (0) | 2018.02.03 |
[android] Fragment 만들기 2-1 (0) | 2018.02.03 |
[android] Fragment 만들기1 (0) | 2018.02.03 |