2014-11-19 4 views
0

누군가가 다음 줄에서 코드가 NullPointer를 throw하는 이유를 말해 줄 수 있습니까?NullPointerException

public List<ApplicationInfo> getAppInfos(Context myContext) { 
    PackageManager pm = myContext.getPackageManager(); 
    List<ApplicationInfo> appInfo = pm.getInstalledApplications(PackageManager.GET_META_DATA); 
    Collections.sort(appInfo, new ApplicationInfo.DisplayNameComparator(pm)); //throws Nullpointer 
    return appInfo; 
} 

나는이 메서드를 별도의 스레드 (UIThread가 아님)에서 호출하려고합니다. 하지만 난 내 활동에서 컨텍스트를 통과 ... 내 활동 에서이 방법을 호출하면 (물론 컨텍스트를 통과하지 않고) 잘 작동합니다.

감사합니다.

업데이트 관련 의견 :

양해 해 주셔서 감사합니다. 그건 까다로운 일입니다. 코드가 에뮬레이터에서 API 17로 정상적으로 실행되지만 실제 장치에서는 작동하지 않기 때문입니다. 그리고 나는 멋진 Alcatel 전화를 가지고 있는데, 나를 위해, USB 디버깅을 위해 실행하기가 까다로워. (나만을위한 것이 아니라, 지원은 끔찍하다.) 어떤 상황에서 나는 에뮬레이터에서도 응용 프로그램을 충돌 시키려고했습니다. 나는 단지 nullpointerexception을 기억하지만 어쩌면 나는 뭔가를 섞었다. 하지만 내가 말할 수있는 것은 내가 Collections.sort ... 주석에 대해 말할 때이다. 앱은 기기에서도 실행됩니다. 지금 당황해서 미안해. 유일하게 내가 할 수있는 말은이 장치가 내 장치에서 내 애플리케이션을 충돌 시키지만 내 에뮬레이터에서는이 앱이 충돌하지 않는다는 것입니다.

final Context myContext = MyActivity.this; 

을 그리고 스레드에 난 그냥이 같은 메소드를 호출합니다 :

나는이 같은 컨텍스트를 인스턴스화

List<ApplicationInfo> myList = getAppInfos(myContext); 

전화 및 에뮬레이터 같은 안드로이드 버전으로 실행!

PackageManager pm = myContext.getPackageManager();

null을 반환하는 경우 : nullPointerExceptionpm에 있기 때문에

+3

디버깅 할 때 어떤 객체가 'null'입니까? – David

+0

'pm '식별자를'final'으로 변경해보십시오. –

+1

컨텍스트를 어떻게 전달합니까? 몇 가지 방법으로 여러 가지 결과를 얻을 수 있습니다. –

답변

0

당신은 얻고있다. 컨텍스트를 얻는 방법을 보지 못한 채로 가끔씩 null 인 경우가 종종 있고 때로는 그렇지 않은 경우도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 에뮬레이터에서 앱은 항상 실행됩니다. UIThread 또는 별도의 스레드에서 호출하는 경우에도 관계 없습니다. 내 장치에서 Alcatel One Touch X 6040은 별도의 스레드에서 호출 될 때 충돌합니다. 그러나 UIThread에서 호출 될 때 실행됩니다.업데이트 된 질문 컨텍스트를 어떻게 전달했는지 – MMike

+0

@Mmike 이것은 장치에 문제가 될 수 있습니다. 장치는 사물을 다르게 처리합니다. Android 용으로 개발되는 문제입니다. 그것은 HTC 전화에서 작동하지만 삼성에서 똑같이 작동하지는 않습니다. 디버거를 사용하고 전화로 실행할 때 진행 과정을 단계별로 실행하여 상황을 확인합니다. – BlackHatSamurai

+0

이봐, 아마도 내가 너무 늦었지만 업데이트 아래 질문에서 알카텔 전화에서 USB 디버깅을 실행할 수 없다고 언급했다. 지원은 끔찍합니다. 나는 하루를 보내서 달려 들었지만 그때 나는 포기했다. 그래서 나는 내 전화로 debbung을 밟을 수 없다! ;/그게 포인트 야. 나는이 문제를 안다. 그러나 단순한 라인이 전체 기기에서 앱을 충돌시키는 것은 슬픈 일입니다. 왜 이것이되어야하는지 모르겠다. 다른 힌트를 줄 수 있니? 고맙습니다. – MMike