출처: https://coding-factory.tistory.com/203
[Android] 인텐트(Intent) 화면 간 이동과 데이터 전달
어플리케이션을 만들때 하나의 화면을 가지고 어플리케이션을 만들지는 않죠. 하나의 화면에 모든기능을 담기란 불가능합니다. 대부분의 어플리케이션은 많은 View를 모으고 모아서 만든 결과물입니다. 그래서 안..
coding-factory.tistory.com
안드로이드에서 이전 액티비티로 돌아가는건 어떻게하나요?
발생하는 문제 및 실행환경 이전 액티비티로 돌아갈 수 있는 간단한 앱을 만들고 싶은데요. 이전 액티비티로 돌아 가려면 어떤 코드가 필요할까요?
hashcode.co.kr
[안드로이드] startActivityForResult ,onActivityResult 사용법
[안드로이드] startActivityForResult ,onActivityResult 사용법 안드로이드 개발을 진행하다 보면 단순히 액티비티를 전환하고 끝! 이 아니라 후속 액티비티에서 작업한 결과물을 호출한 액티비티에서 사용하고..
liveonthekeyboard.tistory.com
1. 단순한 값 전달인 경우
인텐트 생성한 후, Intent의 putExtra() 메소드를 이용하여 추가로 보내고 싶은 값 이름과 그 값을 전달한다.
Intent intent = new Intent(MainActivity.this, NextActivity.class); intent.putExtra("ID", "abc");
그리고 다음 액티비티에서 getExtra() 메소드를 사용하여 이전 액티비티에서 보낸 값을 받는다.
Intent intent = getIntent(); String id = intent.getStringExtra("ID");
2. 다른 액티비티에서 값을 전달 받은 후 다시 이전 액티비티로 돌아오는 경우
인텐트 생성 후 인텐트로 다른 액티비티를 호출할 때 startActivityForResult() 메소드를 사용한다.
이 때 인텐트와 같이 들어가는 int 매개변수는 사용자가 임의로 정의하는 값이다.
보통 저런 값은 명확하게 하기 위해 static 변수로 특정값을 정의한다.
Intent intent = new Intent(MainMapActivity.this, NextActivity.class); startActivityForResult(intent, 1000);
그리고 다음 액티비티에서는 setResult() 메소드를 이용하여 이전 액티비티로 값을 보낸다.
RESULT_OK는 안드로이드에서 정의된 값으로, 결과를 성공적으로 받아온 경우 호출되는 값이다.
finish() 메소드는 이 액티비티를 종료하기 위함이며, 종료하면 이전 액티비티로 돌아간다.
String id = "abc"; Intent intent = new Intent(); intent.putExtra("memo", id); setResult(RESULT_OK, intent); finish();
호출받은 값을 받은 이전 액티비티에서는 onActivityResut() 메소드를 오버라이딩하여 받은 값에 대한 처리를 한다.
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case 1000: String id = data.getStringExtra("id"); Toast.makeText(this, id, Toast.LENGTH_LONG).show(); break; case 2000: String address = data.getStringExtra("address"); Toast.makeText(this, address, Toast.LENGTH_LONG).show(); break; } } }