[Doit! 안드로이드 앱 프로그래밍] Mission7&8
Mission 7 : 로그인화면과 메뉴화면 전환하기
- 로그인 화면과 메뉴 화면 각각을 액티비티로 만듭니다.
- 로그인 화면에는 하나의 버튼이 들어가도록 합니다.
- 메뉴화면에는 세개의 버튼이 들어가도록 하고 각각 ‘고객 관리’, ‘매출 관리’, ‘상품 관리’ 라는 이름으로 표시합니다.
- 로그인 화면의 버튼을 누르면 메뉴 화면으로 이동합니다.
- 메뉴화면의 버튼중에서 하나를 누르면 로그인 화면으로 돌아온후 선택된 메뉴의 이름을 토스트 메세지로 보여줍니다.
매우간단한 예제이다. 두개의 액티비티를 구성한뒤에, 메인액티비티에 로그인 버튼이눌릴때 메뉴액티비티로 이동하도록 하고
메뉴액티비티에서 어느버튼이 눌리건 메인액티비티로 돌아오게끔 하면된다.
돌아오면서 메뉴엑티비티에서 putExtra() 를통해 Intent의 ExtraData를 넣어 onActivityResult() 를 Override 하여 각각의 ExtraData에 있는값을 getStringExtra()를통해 받아서 토스트메세지로 띄워주면 된다.
메인화면
로그인버튼을 눌럿을때
아무버튼이나 눌럿을때
Mission 8: 세개 이상의 화면 만들어 전환하기
- 로그인화면과 메뉴화면 그리고 세개의 서브화면(고객관리화면, 매출관리화면, 상품관리화면) 을 각각 액티비티로 만듭니다.
- 로그인 화면에는 두개의 입력상자와 하나의 버튼이 들어가도록 합니다.
- 메뉴화면에는 세개의 버튼이 들어가도록 하고 각각 ‘고객관리’, ‘매출관리’, ‘상품관리’ 라는 이름으로 표시합니다.
- 로그인 화면의 로그인 버튼을누르면 메뉴화면으로 이동합니다. 만약 사용자 이름이나 비밀번호가 입력되어 있지 않은 상태에서 로그인 버튼을 누르면 토스트로 입력하라는 메세지를 보여주고 대기합니다.
- 메뉴화면의 버튼중에서 하나를 누르면 해당 서브화면으로 이동합니다. 메뉴화면에 있는 로그인 버튼을 누르면 로그인 화면으로 이동하고 각 서브 화면에 있는 메뉴 버튼을 누르면 메뉴화면으로 이동합니다.
이문제의 그림의설명과 보기설명이 좀 다르다. 그림에서는 각 고객관리,매출관리,상품관리에 버튼이 두개씩있어서 하나는 메뉴로, 하나는 로그인으로 이동하라고 되어있지만, 보기에서는 메뉴로 버튼하나만있고 메인메뉴에서 로그인으로 이동하는 버튼을 두라고되어있다.
아무튼나는 그림을보고 (전자) 문제를 해결했다.
로그인버튼을 눌렀을때, 고려해야할점이 아이디와 비밀번호의 입력상자가 비엇느냐 이다.
따라서 각 입력상자의 텍스트값을 getText()를 통해받아 length()가 0이냐를 조건문으로 두어, 0이면 토스트메세지를띄운뒤 return; 을수행하도록 했다.
그렇지않은경우 메뉴액티비티로 이동한다.
메뉴액티비티에서 각버튼이눌리면 각각에 해당하는 관리메뉴버튼으로 이동하도록 했다.
각 관리메뉴에서 메뉴로 버튼이눌리면, 관리메뉴의 이름을 putExtra()하여 ExtraData를 넣어준뒤 finish()를 하여 메뉴액티비티로 이동하도록 했다.
각 관리메뉴에서 로그인으로 버튼이눌리면, ExtraData로 정수값을 다른 KEY값으로 넣어준뒤 finish()하여 메뉴엑티비티로 이동하고 메뉴액티비티에서 해당하는 정수값이면, finish()하여 메인액티비티(로그인화면)으로 이동하도록 했다.
메뉴액티비티에서 메인액티비티로 이동하는 버튼이 없으므로, 메인액티비티에서는 따로 onActivityResult()를 override할 필요없다.
메뉴액티비티에는 onActivityResult()를 override 하여 토스트메세지를 띄워주는것과 메인액티비티로 이동할것인지의 여부를 조건문으로 두어 처리했다.
메인화면
아이디나 비밀번호가 입력되지 않앗을때
로그인후 메뉴화면
관리메뉴를 눌럿을때
관리메뉴에서 메뉴로 버튼을 눌럿을때
관리메뉴에서 로그인으로 버튼을 눌럿을때
모든 예제들의 코드는 깃허브주소 에있다.
댓글남기기