액티비티에서 액티비티를 호출하는 방법입니다.
전 액티비티를 그냥 .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 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);
'Information > Android' 카테고리의 다른 글
[Android] Click Event,Toast,DialogMessage (0) | 2013.01.10 |
---|---|
[비트정보기술학원] Android 교육 2-2일차(DB기록) (2) | 2013.01.08 |
[비트정보기술학원] Android 교육 2-1일차(jQuery,JSP 체험) (2) | 2013.01.08 |
[비트정보기술학원] Android 교육 1일차(개발환경구축) (0) | 2013.01.07 |
[비트정보기술학원] Tomcat Context 등록(추가/삭제) (0) | 2013.01.07 |