ActionBar.TabListener Fragment에 대해서

개요

ActionBar.TabListener는 ActionBar에 Tab의 기능을 추가하는 것이다.
implements ActionBar.TabListener를 통해서 비교적 간단하게 구현 가능한 것이 특징이다.

ActionBar.TabListener 화면1
ActionBar.TabListener 화면2

위 예제를 보면 탭에 따라 화면이 달라지는 것을 볼 수 있다.
Canon 프로젝터 리모콘 / 리모컨 / 마우스 부분 모두 ActionBar이다.
달라지는 화면은 Fargment를 통해 구현할 수 있다.

사용방법

가장 처음으로 클래스에 ActionBar.TabListener를 implements한다.

1
public class MainActivity extends AppCompatActivity implements ActionBar.TabListener {

그 후 메소드를 override를 한다.

→ Android studio에서 ctrl+o를 하면 override method 메뉴가 뜬다.
거기서 ActionBar.TabListener 클래스를 찾아 onTabSelected를 override한다.

tab 선택시 fragment 지정

tab.getPosition()을 사용해서 ‘0’이면 첫번째탭, ‘1’이면 두번째 탭이 선택된 것이다.
해당 탭을 선택 했을 때 Fragment에 대한 처리를 해주면 된다.
생성된 Fragment가 없다면 Fragment생성한다.
fragmentTransaction.replace를 통해서 해당 탭에 보여줄 Fragment를 파라미터로 지정해준다.

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
//프레그먼트 사용하기
MouseFragment mouseFragment = new MouseFragment();
RemoconFragment remoconFragment = new RemoconFragment();

@Override
public void onTabSelected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
MouseFragment myMouserTab = null;
RemoconFragment myRemoconTab = null;

if (tab.getPosition() == 0) {
if (remoconFragment == null) {
myRemoconTab = new RemoconFragment();
Bundle data = new Bundle();
data.putString("tabName", tab.getText().toString());

myRemoconTab.setArguments(data);
remoconFragment = myRemoconTab;
} else {
myRemoconTab = remoconFragment;
}
fragmentTransaction.replace(android.R.id.content, myRemoconTab);
} else if (tab.getPosition() == 1) {
if (mouseFragment == null) {
myMouserTab = new MouseFragment();
Bundle data = new Bundle();
data.putString("tabName", tab.getText().toString());

myRemoconTab.setArguments(data);
mouseFragment = myMouserTab;
} else {
myMouserTab = mouseFragment;
}
fragmentTransaction.replace(android.R.id.content, myMouserTab);
}
}

onCreate에서 ActionBar 생성

getSupportActionBar()를 통해서 화면의 ActionBar를 얻어온다.

1
ActionBar bar = getSupportActionBar();

ActionBar에 탭을 사용하기 위해 Mode를 설정한다.

1
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

각각 탭을 newTab()으로 생성한다.
그 후 Text, Icon등을 지정한다.

newTab()으로 생성된 만큼 탭이 생성된다.
탭의 배열 순서는 생성 순이다.

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
ActionBar.Tab tabRemocon, tabMouse;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//ActionBar
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

tabRemocon = bar.newTab();
tabRemocon.setText("리모컨");
tabRemocon.setIcon(R.drawable.remocon);
tabRemocon.setTabListener(MainActivity.this);
bar.addTab(tabRemocon);

tabMouse = bar.newTab();
tabMouse.setText("마우스");
tabMouse.setIcon(R.drawable.mouse);
tabMouse.setTabListener(MainActivity.this);
bar.addTab(tabMouse);

bar.setDisplayShowHomeEnabled(true);
bar.setIcon(R.drawable.canon_logo);

Fragment

java폴더에서 우클릭을 통해 Fragment를 생성한다.

Android Studio에서 Fragment를 생성

simple Fragment 생성

onCreateView에 Activity의 내용을 구성한다.
fragment_xxx.xml에 화면을 구성한다.

공유하기