어플리케이션에서 클릭, 모션 등을 이용하여 다음 화면으로 넘어가면서 작업을 하게 되는데,
현재의 액티비티에서 startActivity()메서드를 이용하여 새로운 액티비티를 띄워 화면에 표시합니다.
어플리케이션 사용 시 다음화면으로 넘어가면 다시 되돌아와야할 경우가 빈번합니다.
이때, startActivity()를 대신해서 startAcitivityResult() 사용합니다.
startActivityResult(Intent intent, int requestCode);
위 코드를 이용하여 띄울 액티비티를 요청하고 응답을 보내면 onActivityResult 메서드를 이용하여 응답을 처리합니다.
첫 번째 파라미터 requestCode는 이전의 startActivityResult()메서드에서 요청한 코드를 확인할 때 쓰이고,
두 번째 파라미터 resultCode는 띄움을 요청했던 새 액티비티의 성공 및 실패 여부를 상수를 통해 저장 및 전달하게 됩니다.
액티비티 사이에서 서로를 호출하기 위해 필요한 것입니다.
void startActivity(Intent intent)
void startActivityResult(Intent intent)
void startService(Intent intent)
void broadcastIntent(Intent intent)
...
파라미터로 전달하는 인텐트에는 앱 구성요소들이 해야 할 일들을 저장하고 전달합니다.
인텐트는 기본적으로 수행할 기능인 액션(Action)과 액션이 수행될 대상의 데이터(Data)가 함께 이루어져있어요.
Intent intent = new Intent(Action, Data);
클래스 객체나 컴포넌트 이름을 참조하여 액티비티를 참조하여 호출할 대상을 확실히 정할 수 있을 경우에 사용합니다.
MIME타입(문서의 다양성을 알려주기 위한 매커니즘 ex.text/html)에 따라 적절하게 액션타입을 보내줍니다.
다음은 액션과 데이터와 다른 암시적 인텐트만의 대표적인 속성들입니다.
속성 | 설명 |
---|---|
범주 (Category) | 액션이 실행되는데 필요한 다른 추가적인 정보들을 제공 |
타입 (Type) | 데이터의 MIME타입을 명시적으로 지정 |
컴포넌트 (Component) | 인텐트에 사용될 컴포넌트 클래스 이름을 명시적으로 지정 후 실행 |
부가 데이터 (Extra Data | 번들(Bundle)객체에 인텐트의 추가 정보를 담음 |
우선
[ File - New - Activity - Empty Activity ]로 들어가서 새로운 액티비티를 생성해줍니다.
그럼 아래 사진과 같이 사용자지정.java파일과 activity_사용자 지정.xml이 자동 생성됩니다.
버튼을 누르면 새로 생성한 Activity로 이동할 수 있도록 버튼을 추가시켜줍니다.
android:id="@+id/버튼ID로 버튼의 고유 ID를 지정하여 어떤 버튼인지 식별하여줍니다.
메인 액티비티에서 버튼을 눌렀을 때, 화면이 전환된 것을 쉽게 확인하기 위해
메인 액티비티와는 다른 화면을 구성해줍니다.
작성자는 TextView를 추가하여 android:text="전환 완료"속성을 추가하여 전환이 완료됐음을 알려주었습니다.
우선 Button btn_change를 통해서 버튼을 연결할 변수를 선언해주었습니다.
그 아래 onCreate에서 위에서 선언한 btn_change를 findViewById(경로)를 사용하여 버튼 변수와 버튼에 지정했던 ID를 연결해줍니다.
btn_change에 setOnClickListener(new View.onClickListener()의 버튼 클릭 리스너를 이용하여 버튼 클릭 시 발생할 이벤트를 @Override하여 재정의 해줍니다.
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), 이동할 클래스명.class);
startActivity(intent);
}
를 구현해주면 버튼 클릭 시 이동할 클래스명으로
startActivity() 메서드를 이용하여 화면을 전환하여줍니다.
😟
( 왜이리 크냐... )
이제 버튼을 클릭하면
아래와 같이 새로 만든 액티비티로 넘어가게 됩니다.