[안드로이드] Intent(2) - 명시적 인텐트(Explicit intent)

2018. 1. 17. 20:58 구성/인텐트(Intent)

[안드로이드] Intent(2) - 명시적 인텐트(Explicit intent)


2. 명시적 인텐트(Explicit intent)

=> 호출하거나 메시지를 보낼 대상 컴포넌트 이름을 지정하는 방식

=> 주로 애플리케이션 내의 컴포넌트 호출 및 데이터 전달 시 사용

=> 인텐트 필터가 정의 되어 있지 않더라도 컴포넌트를 호출 및 메시지를 전달 할 수 있음

 


(1) startActivity


▪ 다른 액티비티 호출

//다른 액티비티 호출
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);


▪ 다른 액티비티에 값 전달

=> 거의 모든 타입에 대해 오버로딩되어 있으며 배열이나 객체까지 저장가능

//다른 액티비티에 값 전달
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name""워니"); //인텐트 객체에 데이터 담기

startActivity(intent);


▪ 전달된 값 받기

//전달된 값 받기
Intent intent = getIntent();
String value = intent.getStringExtra("워니"); //인텐트 객체에 담긴 데이터 읽어오기


(2) startActivityForResult


▪결과값을 받기 위한 액티비티 호출 - startActivityForResult 메소드 사용

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
/* 위에서 1은 호출 대상을 나타내는 식별자이며 0이상의 중복되지 않는 정수를 넘기되
음수를 넘길 경우는 리턴을 받지 않겠다는 뜻이다.
콜백 함수의 requestCode 값이 된다. */



▪ 전달된 값을 받기 위한 콜백 함수 정의 - 호출된 액티비티가 종료되면 onActivityResult가 호출 된다.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
        case 1:
            if(resultCode == RESULT_OK) {
                String value = data.getStringExtra("키");
            }
        break;
}}


 

▪ 호출된 액티비티에서 값 전달

Intent intent = new Intent(); 
intent.putExtra(“key”, “value”); 
setResult(RESULT_OK, intent);
finish();


[안드로이드] Intent(2) - 명시적 인텐트(Explicit intent) 


출처 : http://blog.naver.com/kcwwck77/220528456650