이번 프로젝트는 이전 프로젝트보다 할 게 많고 복잡했습니다.

 

일단 뷰페이저라는 새로운 녀석을 다뤄야하고 새로운 메인화면을 만들어야 합니다.

 

그리고 원래 액티비티였던 것들을 프래그먼트로 변경해야 합니다. 또한 바로가기 메뉴도 추가해야 됩니다.

 

 

1. Viewpaer

 

프로젝트 이전에 학습하는 강의에서 나오는 녀석입니다. 강의를 그대로 따라가면 어려울 것 없이 만들 수 있습니다. 

 

프레임 레이아웃 안에 뷰페이저를 만드는 것으로 main.xml에서 할 일은 끝나고 xml에서 지정한 id를 이용하여

 

java에서 제어합니다. 제어를 위해서 adapter를 만들어야 하는 것을 잊지 말아야할 것 같네요.

 

뷰페이저 어뎁터를 이용하여 프래그먼트로 바꾼 상세보기 화면들을 뷰페이저에 넣어줍니다.

 

예를 들면 pagerAdapter.additem(Fragment); 이런 식으로요. 그 이전에 프래그먼트를 정의하고 선언하는 건 당연하겠죠.

 

 

2. 데이터 처리

 

원래 액티비티였던 상세보기 화면을 프래그먼트로 바꿨으니 데이터를 다루는 방식도 바꿔야만 했습니다. 

 

액티비티 간에 데이터를 전달할 때 인텐트를 사용하지만 프래그먼트에서는 인텐트를 사용할 수 없기 때문에 메소드 호출 방식으로 데이터를 전달합니다.

 

프래그먼트에서는 액티비티의 메소드를 호출하고, 액티비티에서는 프래그먼트의 메소드를 호출하죠. 이렇게 호출한 메소드로 데이터를 주고 받거나 필요한 기능을 수행합니다. (이게 좀 헷갈리죠..)

 

 

3. 바로가기 메뉴

 

바로가기 메뉴의 동작까지 구현하기 위해서(햄버거 버튼을 클릭했을 때 목록 등장)

 

DrawerLayout과 ActionBarDrawerToggle를 활용합니다. 추가로 단 몇 줄의 코드로 바로가기 메뉴를 만들 수 있죠...

 

그리고 Override에서 onNavigationItemSelected를 찾아 필요 기능을 구현합니다.

 

onNavigationItemSelected 안에서 각 버튼의 ItemId를 int로 받아 실행하죠.

 

 

할 거 다 한 거 같죠? 결과를 확인해봅시다.

 

다행히 통과했습니다. 그런데 리뷰어 님이 몇 가지 오류를 찾아주셨습니다.

 

처음에는 무슨 뜻인지 몰랐습니다. back 키가 제가 만든 버튼들이 아니라 스마트폰의 back 키라는 걸 모르고

 

제가 만든 버튼만 눌러본 거죠... 그래서 '오류가 없는데? 잘못 보신 건가?' 이렇게 생각했습니다.

 

하지만 역시나...

 

 

빨간색 동그라미로 표시한 버튼을 눌렀을 때 리뷰어 님이 말씀하신 것처럼 오류가 발생했습니다.

 

원인을 찾는 건 어렵지 않았습니다.

 

프래그먼트인 상세보기 화면에서 back 버튼을 눌렀을 경우 프래그먼트가 종료되어야 하지만,

 

제가 이 점을 생각하지 않아 그 뒤에 있는 메인 Activity가 종료된 겁니다.

 

한줄평 작성하기 화면에서의 비정상 종료도 비슷한 원리였습니다...

 

게다가 이것 말고도 세부적으로 고쳐야 할 점들을 몇 가지 찾아 PASS했지만 FAIL이 나온 듯한

 

기분이 들었습니다 ㅠ.ㅠ

 

 

다음 프로젝트를 진행할 때 전부 고쳐야겠습니다.

+ Recent posts