[ Android Studio ] #4. 액티비티를 전환해보자

ma.caron_g·2022년 1월 28일
0
post-thumbnail

[ startActivity() ]

어플리케이션에서 클릭, 모션 등을 이용하여 다음 화면으로 넘어가면서 작업을 하게 되는데,
현재의 액티비티에서 startActivity()메서드를 이용하여 새로운 액티비티를 띄워 화면에 표시합니다.


[ startActivityResult() ]

어플리케이션 사용 시 다음화면으로 넘어가면 다시 되돌아와야할 경우가 빈번합니다.
이때, startActivity()를 대신해서 startAcitivityResult() 사용합니다.

startActivityResult(Intent intent, int requestCode);

위 코드를 이용하여 띄울 액티비티를 요청하고 응답을 보내면 onActivityResult 메서드를 이용하여 응답을 처리합니다.

첫 번째 파라미터 requestCode는 이전의 startActivityResult()메서드에서 요청한 코드를 확인할 때 쓰이고,
두 번째 파라미터 resultCode는 띄움을 요청했던 새 액티비티의 성공 및 실패 여부를 상수를 통해 저장 및 전달하게 됩니다.

[ 액티비티 전환 ]

[ 인텐트 (Intent) ]

액티비티 사이에서 서로를 호출하기 위해 필요한 것입니다.

void startActivity(Intent intent)
void startActivityResult(Intent intent)
void startService(Intent intent)
void broadcastIntent(Intent intent)
...

파라미터로 전달하는 인텐트에는 앱 구성요소들이 해야 할 일들을 저장하고 전달합니다.

인텐트는 기본적으로 수행할 기능인 액션(Action)과 액션이 수행될 대상의 데이터(Data)가 함께 이루어져있어요.

Intent intent = new Intent(Action, Data);

>>>> 명시적(explicit) 인텐트

클래스 객체컴포넌트 이름을 참조하여 액티비티를 참조하여 호출할 대상을 확실히 정할 수 있을 경우에 사용합니다.

>>>> 암시적(implicit) 인테트

MIME타입(문서의 다양성을 알려주기 위한 매커니즘 ex.text/html)에 따라 적절하게 액션타입을 보내줍니다.
다음은 액션과 데이터와 다른 암시적 인텐트만의 대표적인 속성들입니다.

속성설명
범주 (Category)액션이 실행되는데 필요한 다른 추가적인 정보들을 제공
타입 (Type)데이터의 MIME타입을 명시적으로 지정
컴포넌트 (Component)인텐트에 사용될 컴포넌트 클래스 이름을 명시적으로 지정 후 실행
부가 데이터 (Extra Data번들(Bundle)객체에 인텐트의 추가 정보를 담음

[ 1. 새로운 Activity 생성 ]

우선
[ File - New - Activity - Empty Activity ]로 들어가서 새로운 액티비티를 생성해줍니다.

그럼 아래 사진과 같이 사용자지정.java파일과 activity_사용자 지정.xml이 자동 생성됩니다.

[ activity_main.xml에 버튼 추가 ]

버튼을 누르면 새로 생성한 Activity로 이동할 수 있도록 버튼을 추가시켜줍니다.
android:id="@+id/버튼ID로 버튼의 고유 ID를 지정하여 어떤 버튼인지 식별하여줍니다.

[ activity_menu.xml에 뷰 추가 ]

메인 액티비티에서 버튼을 눌렀을 때, 화면이 전환된 것을 쉽게 확인하기 위해
메인 액티비티와는 다른 화면을 구성해줍니다.

작성자는 TextView를 추가하여 android:text="전환 완료"속성을 추가하여 전환이 완료됐음을 알려주었습니다.

[ MainAcitivy.java에 Intent 추가 ]

우선 Button btn_change를 통해서 버튼을 연결할 변수를 선언해주었습니다.

그 아래 onCreate에서 위에서 선언한 btn_changefindViewById(경로)를 사용하여 버튼 변수와 버튼에 지정했던 ID를 연결해줍니다.

btn_changesetOnClickListener(new View.onClickListener()의 버튼 클릭 리스너를 이용하여 버튼 클릭 시 발생할 이벤트를 @Override하여 재정의 해줍니다.

public void onClick(View view) {
    Intent intent = new Intent(getApplicationContext(), 이동할 클래스명.class);
    startActivity(intent);
}

를 구현해주면 버튼 클릭 시 이동할 클래스명으로
startActivity() 메서드를 이용하여 화면을 전환하여줍니다.

[ 에뮬레이터 실행 ]

1.

😟
( 왜이리 크냐... )


이제 버튼을 클릭하면


2.

아래와 같이 새로 만든 액티비티로 넘어가게 됩니다.

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글