스프링노트

[android] startActivityForResult 값 주고받기. 본문

DEVELOPMENT/ANDROID

[android] startActivityForResult 값 주고받기.

RAYZIE 2014. 3. 3. 17:06

1. onCreate 바로아래 디파인



  1. private static final int    REQ_CODE_SELECT_TEMPLATE = 1;




2. 버튼 이벤트 하위에 소스삽입.( 나는 버튼으로 액션이벤트를 취했다.)



  1. public void [버튼 이벤트 정의](View _view)
  2.     {
  3.         Intent intent = new Intent(this[값 주고받을 클래스].class);
  4.         startActivityForResult(intent, REQ_CODE_SELECT_TEMPLATE);
  5.     }




3. onActivityResult 정의


  1.     protected void onActivityResult(int requestCode, int resultCode, Intent data)
  2.     {
  3.         super.onActivityResult(requestCode, resultCode, data);
  4.  
  5.         // 템플릿 선택 액티비티일경우
  6.         if(requestCode == REQ_CODE_SELECT_TEMPLATE)
  7.         {
  8.             // 액티비티가 정상적으로 값을 처리하고
  9.             if(resultCode ==RESULT_OK)
  10.             {
  11.                 int nSelectedTemplate = data.getIntExtra("[파라미터 값 String]", -1);
  12.                 if(nSelectedTemplate != -1)
  13.                 {
  14.                     mbtTemplate.setText("selected :"+nSelectedTemplate);    // 되 받은 String값 부모 엑티비티에서 setText (Ex)button)
  15.                 }
  16.             }
  17.             else
  18.             {
  19.                 // 액티비티 데이터 주고 받기 오류
  20.             }
  21.         }
  22.     }


4. 자식 엑티비티에서 inputExtra를 사용한 메소드 생성



  1. private void terminateActivity()
  2.     {
  3.         Intent intent = getIntent()// 이 액티비티를 시작하게 한 인텐트를 호출   
  4.         intent.putExtra("[파라미터값]", mnSelectedIndex)
  5.        
  6.         setResult(RESULT_OK, intent)// 추가 정보를 넣은 후 다시 인텐트를 반환합니다.
  7.         //setResult(RESULT_CANCELED, intent);
  8.        
  9.         finish();
  10.     }




5. position값을 mnSelectedIndex에 입력 (본문에서는 GridView를 받아옴, [GridView].OnItemClick)



  1.     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
  2.         // TODO Auto-generated method stub
  3.         mnSelectedIndex = position;
  4.         terminateActivity();
  5.     }