프로젝트 진행하다가 Fragment에서 startActivityForResult 로 호출하여 결과값을 받아야 할 경우가 있었는데
onActivityResult에서 requestCode 값이 엉뚱한 값으로 와서 당황했던적이 있다...
하여 구글링 해보니 아래와 같은 내용이 있었다.
Fragemnt 에서 startActivityForResult 를 할 경우 android 내부적으로 requestCode를 shit 하고 있었다.
public void startActivityFromFragment(Fragment fragment, Intent intent, int requestCode) {
if (requestCode == -1) {
super.startActivityForResult(intent, -1);
return;
}
if ((requestCode&0xffff0000) != 0) {
throw new IllegalArgumentException("Can only use lower 16 bits for requestCode");
}
super.startActivityForResult(intent, ((fragment.mIndex+1)<<16) + (requestCode&0xffff));
}
하여 Fragment에서 startActivityForResult 호출하여 onActivityResult 에서 값을 받아 처리해야 할 경우 아래와 같이 사용하면 된다.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
int request = requestCode & 0xffff;
// 프래그먼트에서 결과값을 받아야 한다면 아래와 같이...
Fragment fragment = getSupportFragmentManager().findFragmentByTag(태그명);
fragment.onActivityResult(request, resultCode, data);
}
'android' 카테고리의 다른 글
Spannable 이용하여 특정 문자열 색, 사이즈 변경... (0) | 2014.09.03 |
---|---|
1000 단위 콤마찍기... (0) | 2014.09.02 |
유연성 있는 ViewHolder Pattern (0) | 2014.09.02 |
파일 용량 표시... (0) | 2014.09.02 |
ScroView 안에 ListView가 들어가 view가 안그려질때... (0) | 2014.09.02 |
댓글