상세 컨텐츠

본문 제목

안드로이드 리턴값있는 Activity 호출

스마트기기개발관련/안드로이드 개발

by AlrepondTech 2011. 7. 5. 11:20

본문

반응형

 

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

액티비티를 호출할 때는 startActivityForResult 메서드를 사용하며 인수로는 호출할 대상을 지정하는 Intent객체와 호출한 대상을 나타내는 식별자를 전달한다.호출한 대상을 나태내는 식별자는 리턴시에 누구에 대한 리턴인가를 구불할 때 사용한다. 여러 액티비티를 호출할 경우 리턴을 받는 메서드에서 어떤 액티비티에 대한 리턴인지를 구분할 수 있어야 하므로 호출되는 액티비티별로 구유의 번호를 붙여야 한다. 0이상의 중복되지 않는 정수를 넘기되 음수를 넘길 경우는 리턴을 받지 않겠다는 뜻이다.

startActivityForResult(Intent intent, int requestCode)

 

Intent intent = new Intent(CallActivity.this, SubActivity.class);

Intent.putExtra(“Key_name”, “send Message”);

startActivityForResult(Intent, 0);

 

인텐트는 액티비티간에 인수와 리턴값을 전달하는 도구로도 사용된다. 이때는 주로 Bundle 타입의 Extras를 활용하는데 이름과 값의 쌍으로 된 임의 타입의 정보를 원하는 개수만큼 전달 할 수 있다. 다음은 Extras에 값을 저장하는 메서드들 중 일부이다. 거의 모든 타입에 대해 오버로딩되어 있으며 배열이나 심지어 시리얼라이징 가능한 객체까지도 저장할 수 있다.

 

Intent.putExtra(String name, int value)

Intent.putExtra(String name, String value)

Intent.putExtra(String name, boolean value)

 

Name은 전달하는 인수에 대한 이름이되 중복되지만 않으면 자유롭게 붙일 수 있다. 가급적이면 인수의 의미를 명확하게 설명할 수 있는 이름을 붙이는 것이 유리하다. Extras에 저장된 값들은 다음 메서드로 꺼낸다.

Int getInt Extra(String name, int defaultValue)

String getString Extra(String name)

boolean getBooleanExtra(String name, boolean defaultValue)

값이 전달되지 않았을 경우 두 번째 인수로 지정한 디폴트가 리턴되며 문자열의 경우 null이 리턴된다. Extras는 입력뿐만 아니라 액티비티의 리턴값을 돌려줄 때도 사용할 수 있다.

 

호출된 액티비티는 처리가 끝나면 종료해야 하는데 종료하기전 호출한 액티비티에게 전달하자 하는 값을 setResult(int resultCode, Intent data)를 정의하고 finish()로 종료한다.

 

Intent intent = new Intent();

Intent.putExtra(“Key_name” , “send Message”);

setResult(RESULT_OK, intent)

finish();

 

setResult(int resultCode, Intent data)

requestCode 인텐트의 작업 결과이다. 처리가 완료되었으면 RESULT_OK 리턴하고 취소했다면 RESULT_CANCEL 리턴한다. 번째 인수로는 리턴값이 실려 전달될 것이다.

 

 

호출한 액티비티에서 리턴값을 받기 위해서 는 onActivityResult(int requestCode, int resultCode, Intent data) 메서드를 구현해야 한다.

 

//호출한  엑티비티의 리턴값을 받는다protected void onActivityResult(int requestCode, int resultCode, Intent data){        switch(requestCode){        case Activity_set:              if(resultCode == RESULT_OK){                     //사용자 코드                }              break;        }

    }

 

 

 

=================================

=================================

=================================

 

 

 

반응형


관련글 더보기

댓글 영역