SPRING :: NOTE

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

Development Language/JAVA · ANDROID

[android] startActivityForResult 값 주고받기.

RAYZIE 2016. 6. 10. 14:11
반응형
1. onCreate 바로아래 디파인
private static final int    REQ_CODE_SELECT_TEMPLATE = 1;


2. 버튼 이벤트 하위에 소스삽입.( 나는 버튼으로 액션이벤트를 취했다.)
public void [버튼 이벤트 정의](View _view)
    {
        Intent intent = new Intent(this, [값 주고받을 클래스].class);
        startActivityForResult(intent, REQ_CODE_SELECT_TEMPLATE);
    }


3. onActivityResult 정의
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
 
        // 템플릿 선택 액티비티일경우
        if(requestCode == REQ_CODE_SELECT_TEMPLATE)
        {
            // 액티비티가 정상적으로 값을 처리하고
            if(resultCode ==RESULT_OK)
            {
                int nSelectedTemplate = data.getIntExtra("[파라미터 값 String]", -1);
                if(nSelectedTemplate != -1)
                {
                    mbtTemplate.setText("selected :"+nSelectedTemplate);    // 되 받은 String값 부모 엑티비티에서 setText (Ex)button)
                }
            }
            else
            {
                // 액티비티 데이터 주고 받기 오류
            }
        }
    }


4. 자식 엑티비티에서 inputExtra를 사용한 메소드 생성
private void terminateActivity()
    {
        Intent intent = getIntent(); // 이 액티비티를 시작하게 한 인텐트를 호출   
        intent.putExtra("[파라미터값]", mnSelectedIndex); 
       
        setResult(RESULT_OK, intent); // 추가 정보를 넣은 후 다시 인텐트를 반환합니다.
        //setResult(RESULT_CANCELED, intent);
       
        finish();
    }


5. position값을 mnSelectedIndex에 입력 (본문에서는 GridView를 받아옴, [GridView].OnItemClick)
@Override
    public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub
        mnSelectedIndex = position;
        terminateActivity();
    }


반응형
Comments