마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Fragment에서 startActivityForResult가 안되네요.

0 추천

프래그먼트에서 아무리 startActivityForResult를 호출해봐도 안되길래 소스를 뜯어봤는데요.

 

위는 액티비티에서 startActivityForResult를 호출했을때의 코드구요.(FragmentActivity.java)

 

얘는 fragment에서 startActivityForResult를 호출한 결과입니다(Fragment.java ->  FragmentHostCallBack.java)

 

 아무리 봐도 startActivityForResult를 호출하지 않고 startActivity만 호출하고있는데, 이렇게 되면 fragment에서는 startActivityForResult를 호출 못하는 건가요?

모나미153 (17,540 포인트) 님이 2016년 3월 25일 질문

2개의 답변

0 추천
 
채택된 답변
startActivityForResult 를 호출하면, Fragment가 아닌 Activity로 호출받게 됩니다.

 

Fragment를 불러들인 mainActivity가 있다면 거기서 받을 수가 있겠죠.

메인에서 받은 값을 Fragment에서 재 캐치하는 방법으로 했었던게 기억납니다.
개발자초심 (21,220 포인트) 님이 2016년 3월 27일 답변
모나미153님이 2016년 3월 28일 채택됨
예.,.. 그런데, 원래는 fragment에서도 받을수 있었는데
막힌건지 막은건지 이제는 fragment에서 못 받게 되어있더라구요..
0 추천
android.app.Fragment 와 andorid.support.v4.app.Fragment 는 차이가 있습니다.

확인해보세요
aucd29 (218,390 포인트) 님이 2016년 3월 28일 답변
저도 그래서 둘다 확인해봤는데 ... startActivityForResult 부분은 같았습니다...
테스트 해보니 전 잘 들어오네요
안스, compileSdkVersion 23, com.android.support:appcompat-v7:23.1.1 환경입니다


public class MainFrgmt extends PageFrgmtBase {
    private static final org.slf4j.Logger mLog = org.slf4j.LoggerFactory.getLogger(MainFrgmt.class);

    @Bind(R.id.view_switcher) ViewSwitcher mViewSwitcher;
    @Bind(R.id.contentLayout) LinearLayout mContentLayout;

    @Override
    protected void initLayout() {
        super.initLayout();

        Intent i = new Intent(Intent.ACTION_DIAL);
        startActivityForResult(i, 111);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (mLog.isDebugEnabled()) {
            StringBuilder log = new StringBuilder();
            log.append("===================================================================\n");
            log.append("test on activity result \n");
            log.append("===================================================================\n");
            mLog.error(log.toString());
        }

        super.onActivityResult(requestCode, resultCode, data);
    }
}


I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@67f7e8d time:302040333
E/MainFrgmt[main]: ===================================================================
                   test on activity result
                   ===================================================================
                    - onActivityResult:56
D/SecWifiDisplayUtil: Metadata value : SecSettings2
감사합니다. 다시한번 테스트 해 볼게요.
...