[Android] 액티비티에 관하여

Posted on Updated on

why? 액티비티를 왜 알아야 하는 것인가?

새로운 화면을 만드려면 액티비티 (Activity)를 만들어야 한다.

안드로이드의 한 화면은 곧 Activity 라고 이해해도 무방하다. (do it 안드로이드 69페이지)

when? 그렇다면 화면을 만들고 싶지 않다면, 즉, 백그라운드에서 도는 프로그램을 만들고 싶다면 Activity를 궂이 만들지 않아도 되는 것인가?

답변:                                                 (언젠가 답을 달자)

what? 액티비티는 java 파일인가? xml파일인가?

책에서는 제대로 define 을 해주진 않고 있지만 그냥 문맥상 유추해 보면 java 파일이 Activity 인 것으로 보인다. 그렇다면 위 제일 첫 문장은 100% 맞는 말은 아닌 것 같다. 빈 화면이나, 백그라운드로 액티비티가 돈다면 화면은 없어도 될 것이다. 그렇다면 위의 첫 번째 why 는 오해의 소지가 있다. 좀 더 생각해 보고 다시 글을 수정하도록 하자

“안드로이드 프로그래밍 정복: 김상형 지음” P106을 보면. 메인클래스인 AndroidFirst는 Activity 클래스를 상속받는다. Activity는 화면 하나를 표현하므로 이 클래스를 상속받으면 화면 하나가 만들어진다. 액티비티가 생성될 때 호출되는 onCreate 메서드를 재정의하여 필요한 초기화를 하는데, 제일 먼저 슈퍼클래스인 Activity의 onCreate를 호출하여 부모부터 초기화했다. 이 단계에서 안드로이드 액티비티의 표준 초기화가 수행된다.

“안드로이드 프롸그래밍 정복: 김상형 지음” P48
액티비티 : 사용자 인터페이스를 구성하는 기본 단위. 윈도우와 유사한 개념이지만 정확하게 같지는 않으며 더 큰 개념이다.

위의 말대로라면, Activity는 java 파일 안에 속할 수 밖에 없다. 바로 java class 이기 때문이다.

what? 그렇다면 새로운 화면을 만들기 위해서는 어떤 절차를 밟아야 하는 것인가?

1. 새 액티비티 만들기

최초 프로젝트를 만들 때 MainActivity 라는 파일이 만들어져 있다. 그 파일을 Ctrl + CV 해서 파일을 하나 더 만든다. 중복 파일 명 때문에 이름을 살짝 바꿔준다.NewActivity 라고 바꾸어 줬다.

2. 새 레이아웃 만들기

사실 레이아웃 자체를 액티비티에서 작성할 수 있지만 그 것을 java 소스와 분리하기 위해서 레이아웃을 따로 xml 파일로 작성하여 관리한다는 것이 요지인 것 같다. 새 레이아웃을 만든다 (activity_new.xml)그리고 그 레이아웃을 위의 새로운 액티비티에 연결해 주기 위해서 액티비티에 등록을 해 준다.

3. 새 액티비티에 새 레이아웃을 등록하기

새 액티비티의
super.onCreate(savedInstanceState); 아래 줄에
setContentView(R.layout.activity_new); 를 추가해 준다.
새 액티비티가 쓰면 저 레이아웃을 띄우겠다는 말인 것 같다.
(이 쯤되어서 책에 혼란을 느끼고 있다)

3. 매니페스트 태그 추가하기

사실 왜 매니페스트에 태그를 추가하는지 잘 모르겠다. 기존의 <activity> 태그 및에 새로 <activity를 추가 하며 그 액티비티의 속성으로 android:name=”NewActivity“></activity> 를 기입한다.

아직 내가 책을 덜 읽었기 때문이라고 생각하고 일단 넘어간다. (빈공간을 인정하고 다음에 다시 채우자)

4. 새 액티비티 시작 코드 넣기

액티비티를 시작하기 위해서는 인텐트를 만들고 그 인텐트를 startActivity 라는 메서드의 인자로 넣어 줘야 한다.
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
startActivity(intent);

홈페이지 만드는 것과 많이 비슷하게 느껴지는 대목이다. 약간 다르지만 얼추 맞아 비슷하게 떨어지는 것 같다.

질문 : onButtonClicked 같은 메서드에 View v 를 넣어준다. 이게 어떤의미일까?

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중