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

+ Recent posts