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

new Intent에서 첫 번째 파라미터에 context로는 넣을 수 없나요?

0 추천

안녕하세요.

외부라이브러리 사용중에서, 사용방법에

Intent intent = new Intent(MainActivity.this, AlbumSelectActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_LIMIT, 10);
startActivityForResult(intent, Constants.REQUEST_CODE);

이렇게 사용하라고 하더라구요.

 

근데 제가 이 메소드를 사용하는 위치가 액티비티가 연결된 클래스가 아니라, 그냥 클래스에서 사용하거든요.

그냥 공통함수용 클래스인데, 생성자로 context객체를 받습니다.

 

그래서

public OKFunction(Context context) {
    this.permissionCheck = new PermissionCheck(context);
    this.mContext = context;
}

이런식으로 생성자를 써서.. 메인 액티비티에서 호출을 통해 인스턴스도 만들어줬어요.

 

그리고 저 설명에 나온 메소드를 아래처럼

Intent intent = new Intent(mContext, AlbumSelectActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_LIMIT, 10);
 startActivityForResult(intent, Constants.REQUEST_CODE);

이렇게 했거든요. 저 mContext도 들어가있는지 로그로 찍어보니 패키지명.MainActivity로 나오구요..

 

 

근데 에러 메시지에는

Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

이런 메시지가 나옵니다.

 

그냥 예제 테스트용으로, 메인액티비티 하나 있는 프로젝트에 넣을 때는 잘 실행되니.. 라이브러리 문제가 아니라 저 mContext가 문제인것 같은데 어떻게 해야할까요?? ㅠㅜ

 

감사합니다 (__)

 

익명사용자 님이 2017년 7월 24일 질문

1개의 답변

0 추천
 
채택된 답변

아 찾았네요.

((Activity)mContext).startActivityForResult(intent, REQUEST_TAKE_ALBUM);

마지막 부분을 액티비티처럼해야하는데 안해서 그러네요.

원래 이부분 에러가 나야하는데.. 안나서 몰랐네요.

익명사용자 님이 2017년 7월 24일 답변
...