앱 만들기/안드로이드

인텐트를 이용해 값 전달하기.

나도 처음이야 2021. 10. 14.

액티비티를 전환하기 위해서는

인텐트를 이용해서 호출할 액티비티를 부르면 된다. 이런 방식을 바로 명시적 인텐트라고 한다.

하기처럼 작성한 코드가 될 것이다.

 public void onClick(View v) {            
                Intent intent = new Intent(getActivity(), GameActivity.class);         
                startActivity(intent);
            }

어떤 버튼을 눌렀을 때,

Intent 객체를 만들고 첫 번째 인자 값으로는 context 를, 두번째 인자값으로는 이동할 Activity의 class를 상기처럼 적어주면 된다.

그리고, startActivity() 함수에 해당 인텐트를 넣어주면 GameActivity 가 실행되는 것이다.

이렇게 이동할 액티비티의 이름을 직접 적어주는 것을 명시적 인텐트라고 표기한다.

그럼, 액티비티 화면에서 다른 액티비티 화면으로 전환할 때 데이터를 넘겨주고 싶다면 어떻게 할까?

바로 Intent 가 지원하는 메서드를 이용하면 된다. 예를 들어보자.

 @Override
            public void onClick(View v) {          
                Intent intent = new Intent(getActivity(), GameActivity.class);
                //스테이지 정보를 넘긴다.
                intent.putExtra("stageInfo", 2);
                startActivity(intent);
            }

값을 넘기기 위해서 intent.putExtra()라는 메서드를 이용하였다.

첫 번째 인자는 키 값이고, 두 번째는 실제 int형으로 넘겨질 값이다.

putExtra() 메서드는 오버 로딩으로 정의된 메서드라서 여러 가지 타입을 담을 수 있다. 간단한 데이터들은 putExtra() 함수를 사용해서 넘기면 된다.

오버로딩된 putExtra 함수

그럼, 전환된 액티비티 화면에서는 이 값을 어떻게 받을까? 

getIntent()라는 함수를 이용하면 된다. 

 // 인텐트로 스테이지 정보 받아오기
Intent intent = getIntent();
// 정보를 받지 못했을때는 무조건 1판부터
GameActivity.stagelevel = intent.getIntExtra("stageInfo", 1);

얻어온 intent 인스턴스를 활용해 getIntExtra() 메서드에서 해당 키값을 인자로 넣어주면 우리가 넘겼던 

int 형 값이 반환된다. getIntExtra()의 두 번째 인자 값은 만약 값이 없을 때는 디폴트로 1을 설정한다는 의미이다.

우리는 2를 넘겨주었기 때문에 여기서는 2가 받아진다.

getIntExtra() 메서드와 유사하게 getXXX() 메서드는 여러 자료형 타입을 지원한다. 

넘겨진 자료형에 맞게 받을 때도 그에 맞는 자료형 메서드를 사용하면 된다.

getIntent() 함수는 주로 onCreate() 메서드에서 사용이 된다.

액티비티가 실행될 때 여기서 인텐트를 받아오는 것이 일반적이기 때문이다.

이렇게 적용된 코드는 하기처럼, 게임에서 충분히 활용이 된다.

액티비티 전환시 2스테이지 정보를 게임화면으로 전달해준다.

게임 스테이지 정보를 게임 화면으로 넘겨줌으로써

각 스테이지를 손쉽게 바로 플레이할 때도 사용이 된다.

찾아주셔서 감사합니다.

 

[P.S]

빗소리를 좋아하신다면, Rain Sound ☆ 빗소리 앱을 들어보세요

제가 한 땀 한 땀 만들어보았습니다. 좋은 하루 보내세요. ^^

 

https://play.google.com/store/apps/details?id=blue.soo.rainsounds

 

Rain Sound ☆ 빗소리

비가 오는 소리가 좋았다.. 그러다 보니... 어쩔 땐 비가 오는 소리를 듣고 싶었다. ... 내가 듣고 싶어서 빗소리 앱을 만들어 보았다. 나를 위로해주는 사운드 앱이라서 마음에 든다. https://play.goog

soo0100.tistory.com

https://soo0100.tistory.com/1576

 

안드로이드 폰에 설치된 메시지 앱 호출하기.

인텐트를 활용하면, 폰에 설치된 메시지 앱들을 자동으로 호출할 수 있다. 직접 Activity를 호출하는 명시적인 인텐트 가 아니라, 안드로이드 프레임 워크를 통해 설치된 메시지 앱들의 Activity 를

soo0100.tistory.com

 

반응형

댓글