Android > Activity 화면간 이동시 데이터 전달 (startActivityForResult)
등록일 : 2017-07-05 11:12
조회수 : 94,147
우선 activity1 액티비티와 activity2 액티비티가 있다고 가정한다.
동작은 activity1 에서 activity2로 이동한 후 다시 activity2에서 activity1로 이동하며 데이터를 넘기는 것이다.
1. intent를 사용해 activity2 액티비티로 넘어감
public static final int REQUEST_CODE = 1001;
......
Intent intent = new Intent(getBaseContext(), activity2.class); // activity2로 이동하는 intent 생성
//intent 정보를 startActivityForResult에 실어 보냄(첫번째 파라미터는 intent, 두번째 , 데이터를 구분할 구분자값)
startActivityForResult(intent,REQUEST_CODE);
2. activity2 액티비티에서 작업을 끝낸 후 activity1 액티비티에 값을 전달하고 finish() 시킴
Intent myIntent1 = new Intent();
myIntent1.putExtra("name", "mike");
setResult(1, myIntent1);
finish();
name:mike 값을 activity1 으로 넘김
activity1 에서 (onActivityResult) resultCode 값 1을 받음.
3. activity1 액티비티에서 activity2 액티비티에서 보낸 값을 받아 사용하기 위해 onActivityResult 메서드 구현
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(getBaseContext(), "request code : "+requestCode,Toast.LENGTH_SHORT).show();
if(requestCode == REQUEST_CODE)
{
Toast.makeText(getBaseContext(), "On ActivityResult called with code : "+resultCode , Toast.LENGTH_LONG).show();
}
if(resultCode ==1)
{
String name = data.getStringExtra("name");
Toast.makeText(getBaseContext(), "result name : "+name,Toast.LENGTH_LONG).show();
}
}