[안드로이드] 안드로이드스튜디오(Android Studio) 액티비티(Activity)와 화면 이동, 인텐트(Intent),액티비티의 라이프 사이클(액티비티 생명주기)안드로이드 예제, 안드로이드 강좌
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 액티비티와 화면 이동에 관한 내용입니다.
기본화면에서 화면을 추가해 화면 간의 이동과 값을 상호 전달하는 방법등을 살펴보겠습니다.
보통 화면 단위의 개발이라면 하나의 액티비티가 자신의 레이아웃을 갖는 경우가 많습니다. 따라서 화면의 이동이라면 일반적으로 액티비티와 액티비티 간의 이동을 구현하는 것입니다.
액티비티의 라이프 사이클(액티비티 생명주기)
이미지 출처 : 구글
액티비티가 실행되기 위해 Create 이벤트가 발생합니다. 생성된 뒤 바로 시작하기 위해 Start와 Resume 이벤트가 호출됩니다. 액티비티가 멈추면 Pause 이벤트가 호출되고, 다시 실행할 경우 Resume 이벤트가 다시 호출됩니다. 액티비티가 정지될 경우 Stop 이벤트가 호출되며, 다시 시작될 경우 Start, Resume 이벤트를 차례로 호출합니다.
MainActivity의 새창띄우기버튼을 클릭했을 때 EditText의 Text가 SubActivity가 열리면서 SubActivity의 TextView에 나타나고 SubActivity의 닫기 버튼을 클릭했을 때 finish() 메소드를 호출하여 SubActivity를 종료하는 예제입니다. MainActivity에 새로운 창을 띄우고 MainActivity에서 입력된 값을 전달하는 기능을 구현합니다. 파라미터의 전달을 위해 인텐트(Intent)를 사용합니다. 인텐트를 직역하면 '의도'로서 액티비티가 전달할 수 있는 방법을 제공해줍니다.
activity_main.xml 입니다. 그냥 에디트텍스트 하나 버튼하나가 있습니다.
MainActivity.java 소스코드입니다.
인텐트에서 새로운 액티비티를 실행하기 위해 new Intent로 선언해 사용하고, 파라미터로 애플리케이션 컨텍스트와 액티비티 클래스를 사용합니다.
Intent intent = new Intent(getApplicationContext(), SubActivity.class);
그다음 파라미터로 전달할 객체를 선언합니다. 가장 쉬운 방법은 String 변수로 PARAM1 을 정의한 뒤 intent에 추가하고 startActivity(intent)를 사용해 새로운 액티비티(SubActivity)를 호출합니다.
sub.xml 레이아웃입니다. 텍스트뷰와 버튼이 하나 있습니다.
인텐트를 이용해 전달받은 객체를 가져와 사용합니다.
Intent intent = getIntent();
String strParam = intent.getStringExtra("PARAM1");
인텐트로부터 PARAM1 을 읽어와 sub.xml 화면의 텍스트뷰에 값을 처리합니다.
TextView textView = (TextView)findViewById(R.id.textView2);
textView.setText(strParam);
버튼이 클릭되면 화면을 닫습니다. 버튼 클릭 시 finish()메소드를 호출해 현재 액티비티를 종료합니다.
21~27Line
AndroidManifest.xml 파일입니다. 모든 액티비티는 AndroidManifest.xml에 추가를 하여야 호출이 가능합니다. 액티비티를 추가하지 않으면 오류가 뜨므로 반드시 18~20Line처럼 액티비티를 추가해줘야 합니다.
디바이스에서 테스트한 모습입니다.
새창띄우기 버튼을 클릭하면
위 이미지와 같이 인텐트로부터 PARAM1 을 읽어와 텍스트뷰에 뿌려줍니다.
이 예제의 액티비티 생명주기를 살펴보면 MainActivity 가 Create > Start > Resume 이 되고 에디트텍스트에 값을 입력하고 새창띄우기 버튼을 클릭하면 SubActivity가 창에 나타납니다. MainActivity는 뒤편에 있다고 생각하는 것이 편합니다. MainActivity는 Pause 상태입니다. MainActivity(Pause) > SubActivity(Create) > SubActivity(Start) > SubActivity(Resume) > MainActivity(Stop)
SubActivity 의 닫기 버튼을 클릭하면 다음과 같이 됩니다.
SubActivity(Pause) > MainActivity(Start) > MainActivity(Resume) > SubActivity(Stop) > SubActivity(Destroy)
이상으로 포스팅을 마칩니다. 감사합니다.
참고서적 : 나홀로 개발자를 위한 안드로이드 게임 프로그래밍 [ 이병옥 지음 ] [ 에이콘 ]
Fin.
잘 못 된 정보가 있으면 말씀해주세요~
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.