관리 메뉴

Bbaktaeho

[Android] Intent 다뤄보기 (startActivity, getIntent, putExtra, getExtra) 본문

개발 (Develop)/안드로이드 (Android)

[Android] Intent 다뤄보기 (startActivity, getIntent, putExtra, getExtra)

Bbaktaeho 2020. 9. 12. 22:13
반응형

Intent


Intent를 해석하면 '의도'라고 표현할 수 있습니다.

어떠한 의도를 가지고 실행할 것인지를 인텐트에 담아서 안드로이드에 전달하면 해당 인텐트를 해석하고 실행합니다. 예시로 실행할 대상의 액티비티 이름과 전달할 데이터를 담아서 인텐트를 생성하고 startActivity메서드에 인텐트를 담아서 호출하면 안드로이드는 인텐트를 분석해서 지정한 액티비티를 실행시킵니다. 전달된 인텐트는 타깃 액티비티까지 전달되고 전달받은 인텐트에 데이터가 있다면 이를 꺼내서 사용할 수 있습니다.

프로젝트 생성


Empty Activity로 새로 생성합니다.

 

원하는 이름을 정하고 finish 합니다.

 

생성 끝.

코드 작성


Intent로 화면 전환

화면 전환을 하기 위해서 새로운 액티비티를 생성합니다.

이름은 SecondActivity로 지정하겠습니다.

레이아웃 xml 파일도 덩달아 생성되므로 수동으로 생성할 필요가 없어요

 

화면 전환을 위한 버튼부터 생성하겠습니다.

activity_main.xml 파일에 버튼을 추가합니다.

버튼 뷰의 id 값은 button 그대로 두겠습니다.

 

MainActivity.java 에서 로직을 작성합니다.

레이아웃에서 생성한 버튼을 가져오고 클릭이벤트가 발생하면 화면 전환이 이루어지도록 구현했습니다.

새로운 액티비티를 실행시키고 인텐트를 보낸 액티비티는 종료시킵니다.

 

화면에 보여주기 위해 activity_second.xml 파일에 Text를 추가합니다.

 

 

Intent로 데이터 전송

인텐트를 이용해서 액티비티간 데이터를 주고받을 수 있습니다.

activity_second.xml 에 Text를 추가합니다.

새로운 Text는 전달받은 데이터를 보여주기 위함입니다.

하지만 바로 보이지 않고 버튼을 클릭했을 때 보여주도록 구현하겠습니다. 

 

public void onClick(View view) {
	Intent intent = new Intent(MainActivity.this, SecondActivity.class);
	intent.putExtra("key", "데이터 전송");
	startActivity(intent);
	finish();
}

putExtra 메서드를 추가해서 name(키), value 값을 담아줍니다.

보낸 값의 타입은 String 입니다.

 

SecondActivity.java 에서 textView2를 가져옵니다.

getIntent 메서드를 통해 전달받은 인텐트에서 get<type>Extra 메서드로 가져옵니다. 문자열 타입으로 전달했으니 getStringExtra 메서드를 사용했습니다.

버튼을 클릭했을 때 TextView2가 수정도 되록 구현합니다. TextView의 text 수정은 setText 메서드를 이용합니다.

 

Intent로 웹사이트 이동

웹 사이트로 이동하는 버튼을 만들어보겠습니다.

activity_main.xml 에서 버튼을 추가하고 아이디는 button2라고 지정했습니다.

 

<uses-permission android:name="android.permission.INTERNET" />

AndroidManifest.xml 파일에 permission을 추가합니다.

 

Button btn2 = findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View view) {
 		Intent intent = new Intent(
  			Intent.ACTION_VIEW,
  			Uri.parse("https://bbaktaeho-95.tistory.com")
		);
		startActivity(intent);
	}
});

MainActivity.java 에서 위 코드를 추가합니다.

 

 

Intent로 다이얼 사용

웹 사이트 불러오는 것과 다른 것이 거의 없습니다.

먼저 다이얼을 불러오기 위한 버튼을 생성합니다.

activity_main.xml 에서 진행했습니다.

상단에 다이얼 버튼을 생성합니다.

 

Button btn3 = findViewById(R.id.button3);
btn3.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View view) {
		Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:010-1234-1234"));
		startActivity(intent);
	}
});

새로 생성한 다이얼 버튼을 불러오고 클릭이벤트가 발생하면 다이얼로 넘겨줍니다.

"tel:..." 문자열을 파싱 해서 의도를 파악합니다.

 

 

반응형