누군가가 다음 줄에서 코드가 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
을 반환하는 경우 : nullPointerException
pm
에 있기 때문에
디버깅 할 때 어떤 객체가 'null'입니까? – David
'pm '식별자를'final'으로 변경해보십시오. –
컨텍스트를 어떻게 전달합니까? 몇 가지 방법으로 여러 가지 결과를 얻을 수 있습니다. –