반응형
출처: https://coding-factory.tistory.com/203
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; } } }
반응형