0

我正在尝试设置一个不扩展 Activity 类的助手类。我如何需要使用getPackageManager(). 我怎样才能做到这一点?

为什么我需要这个?好吧,我正在尝试设置这个 Helper 类,并尝试使用扩展的 Helper 类来实现Activity。但是我总是得到一个空指针异常,因为我的助手对象是空的。

有小费吗?

4

1 回答 1

1

通常最好的方法是把你想做的事情传递Context给你的新类的构造函数。这样,您就可以使用它来调用属于Activity.

下面是一个示例,它应该可以帮助您解决问题:

private Context context;

// ...

public HelperClass(Context c){
    context = c;
}

// ...

context.getPackageManager();

然后,您可以通过在初始化新类时添加 Context 来调用它:

new HelperClass(this);

尽管在某些情况下,例如从片段中,您可能必须提供getActivity();.

new HelperClass(getActivity());

尝试如上所示编辑您的课程,如果您发现任何改进,请告诉我们。

如评论中所述,除非您打算使用上下文来编辑视图等,否则最好context = c.getApplicationContext();在构造函数中使用。

于 2013-08-02T22:59:48.470 回答