首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >The NullPointerException

The NullPointerException
EN

Stack Overflow用户
提问于 2014-11-20 04:16:08
回答 1查看 265关注 0票数 0

谁能告诉我为什么下面这行代码会抛出一个NullPointer。

代码语言:javascript
复制
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的Emulator上运行得很好,但不能在我的真实设备上运行。我得到了一个很酷的Alcatel手机,对我来说,让它运行usb调试真的很棘手(我认为不仅仅是对我来说,它的支持很糟糕)。在某些情况下,我也实现了在Emulator上使应用程序崩溃。我只记得一个nullpointerexception,但也许我把什么搞混了。但我能说的是,当我评论Collections.sort的时候...出去吧。该应用程序也可以在设备上运行。我很抱歉现在让你这么困惑。我唯一能说的是,这行代码会使我的应用程序在我的设备上崩溃,但不会在我的Emulator上崩溃,而且只有当我从单独的线程调用它时才会。

我像这样实例化上下文:

代码语言:javascript
复制
final Context myContext = MyActivity.this;

在Thread中,我只需像这样调用方法:

代码语言:javascript
复制
List<ApplicationInfo> myList = getAppInfos(myContext);

PHONE和Emulator正在运行相同的Android版本!

EN

回答 1

Stack Overflow用户

发布于 2014-11-20 04:27:38

您将获得nullPointerException,因为pm in:

PackageManager pm = myContext.getPackageManager();

正在返回null。在不了解如何获得上下文的情况下,很难说出为什么有时是null,有时不是。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27026156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档