1. onColorClick과 switch()를 이용한 구성
그 다음엔 switch 를 이용하여 fragment간 이동을 가능하게 하는 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 | Fragment frag_red; Fragment frag_blue; Fragment frag_green; Fragment frag_yellow; // Fragment fragment = new Fragment(); //color 0 red 1 blue 2green 3 yellow @Override public void onColorClick(int color) { Fragment frag = null; switch (color) { case 0: frag_red = getSupportFragmentManager().findFragmentByTag("red"); frag = frag_red; if(frag_red==null){ frag_red=new RedFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_ex, frag_red, "red").commit(); } break; case 1: frag_blue = getSupportFragmentManager().findFragmentByTag("blue"); frag = frag_blue; if(frag_blue==null){ frag_blue=new BlueFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_ex, frag_blue, "blue").commit(); } break; case 2: frag_green = getSupportFragmentManager().findFragmentByTag("green"); frag = frag_green; if(frag_green==null){ frag_green=new GreenFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_ex, frag_green, "green").commit(); } break; case 3: frag = frag_yellow; frag_yellow = getSupportFragmentManager().findFragmentByTag("yellow"); if(frag_yellow==null){ frag_yellow=new YellowFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_ex, frag_yellow, "yellow").commit(); } break; } getSupportFragmentManager() .beginTransaction() .replace(R.id.fragment_ex, frag) .addToBackStack(null) .commit(); } | cs |
이렇게 구현하면 바로 commit()를 해줄 수 있는 장점이 있습니다. 그러나 언급되지 않은 getSupportFragmentManager()가 사용되었습니다.
그것은 여기서 가져오면 됩니다. 사용될 프래그먼트들을 태그를 통해 가져오고 그 값을 통해 if문과 case문을 결합하여 beginTransaction() 을 호출합니다.
2. 준비물
1 2 3 4 | import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; | cs |
여기서 getSupportFragmentManager()가 사용되게 됩니다. 이 부분을 잊으면 진행에 문제가 되니 주의해야 합니다. Fragment를 이용하기 위해선 Activity, Manager, Transaction 모두를 다 불러와야 합니다.
다음엔 다른 방법을 알아보겠습니다.
'Java' 카테고리의 다른 글
[android] 구글맵 3 (0) | 2018.02.03 |
---|---|
[android] 구글맵 2 (0) | 2018.02.03 |
[android] 구글맵 1 (0) | 2018.02.03 |
[android] Fragment 만들기 2-2 (0) | 2018.02.03 |
[android] Fragment 만들기1 (0) | 2018.02.03 |