본문 바로가기

Information/Android

[Android] Activity 호출 및 호출된 Activity 데이터제공



액티비티에서 액티비티를 호출하는 방법입니다.

전 액티비티를 그냥 .Net 의 Form 으로 간주하고 설명을 하도록 하겠습니다.(간간히 .Net 과 비교합니다)


c#에서 폼을 호출하려면

Form f = new form(); //해당 폼의 인스턴스를 생성한후에 표시합니다.

f.show();


안드로이드에서 Activity 를 호출하려면 intent 라는 개체를 이용해서 호출을 해야합니다.

Intent it = new Intent(getApplicationContext(), SubActivity.class);

it.putExtra("param","이값은 부모폼에서 넘겨진 값입니다."); //파라미터값 전송함

startActivityForResult(it,100);  //intent, Requset Code = 100



//=============================================  아래함수 추가 ===========

//== 서브폼이 닫힐경우에 처리할 코드값입니다.

//== 서브폼 호출시에 전달한 Requset코드값으로 완료된 폼을 구분합니다.

//=======================================================================

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// 서브윈도우로부터의 값반환

super.onActivityResult(requestCode, resultCode, data);

if(resultCode == 100) { //이곳에서 호출완료된 폼을 구분합니다.

String retval = data.getStringExtra("result"); //서브윈도우로부터 받은 값

Toast.makeText(getApplicationContext(), "서브윈도우완료됨 반환값="+retval, 100).show();

}

}


//=============================================  서브폼 코드추가 ===========

Intent intent = new Intent();

intent.putExtra("result", "return message");  //부모폼으로 전송할 값을 설정합니다. 역시 intent 를 사용합니다.)

setResult(RESULT_OK,intent) ;  // 이명령어를 실행해야만 부모폼에서 결과를 받아볼 수 있습니다. 위에서 설정한 intent 를 넘겨줍니다.

finish(); //폼을 닫습니다. (= .net close())

 

줄수를 보면 두줄로 크게 차이없습니다.(안드로이드에서는 파라미터전송줄이 한줄더 있을뿐 단순 호출이라면 두줄만으로 끝)

 

흠...더이상 뭐 설명할게 없지만서두! 너무 짧으니 몇마디 더 보탭니다.


인텐트는 액티비티의 호출뿐아니라 전화번호를 추가하거나 전화를 걸거나 웹페이지를 오픈하거나하는등의 훨씬더 많은 일을 합니다.

그냥 여기서는 레이아웃을 포함하는 액티비티를 호출(=form)하는 개념만 설명하는것입니다.


자세한 레퍼런스를 보려면 아래 링크를 클릭하세요.

"INTENT Reference"


Intent it = new Intent(getApplicationContext(), SubActivity.class);

현재 컨텍스트를 기준으로(getApplicationContext()) Intent를 생성하며 호출하고자하는 액티비티의 이름은 SubActivity 입니다.)


it.putExtra("param","이값은 부모폼에서 넘겨진 값입니다."); //파라미터값 전송함

인텐트에 파라미터값을 설정하는 명령어입니다. 파라미터의 이름은 param 이며 이어지는 파라미터가 전송되는 구조입니다.


startActivityforResult(it,100);   //해당 액티비티를 호출하며 요청코드는 100으로 설정합니다.

실제로 액티비티를 호출하는 구조입니다. 파라미터로 그냥 intent 를 넘겨주기만 하면 실행됩니다.

기본적으로 넘겨주는 파라미터가 없다고 한다면 startActivity(it) 만으로 실행이가능하지만 값을 넘겨주고 넘어온값을 처리하고자한다면 위 소스처럼 startActivityforResult 를 이용해야합니다. 단 이명령을 사용시에는 Request 코드를 넘겨줘야합니다. (예제문의 100)


서브폼에서도 값을 넘겨주려면 Intent 를 생성해서 창을 닫아야겠죠?

(위 소스에 포함되어있으니 확인하시기 바랍니다)


Intent 를 이용한 몇가지 팁입니다! -- 차후에 설명 하겠지만 너무 글이 짧아서 올려봅니다


#웹페이지열기

Intent my = new Intent(Intent.ACTION_VIEW,Uri.parse("http://tindevil.com"));

startActivity(my);


#연락처열기

Intent my2 = new Intent(Intent.ACTION_VIEW,Uri.parse("tel:010-0000-0000"));

startActivity(my2);