我正在尝试设置一个不扩展 Activity 类的助手类。我如何需要使用getPackageManager()
. 我怎样才能做到这一点?
为什么我需要这个?好吧,我正在尝试设置这个 Helper 类,并尝试使用扩展的 Helper 类来实现Activity
。但是我总是得到一个空指针异常,因为我的助手对象是空的。
有小费吗?
我正在尝试设置一个不扩展 Activity 类的助手类。我如何需要使用getPackageManager()
. 我怎样才能做到这一点?
为什么我需要这个?好吧,我正在尝试设置这个 Helper 类,并尝试使用扩展的 Helper 类来实现Activity
。但是我总是得到一个空指针异常,因为我的助手对象是空的。
有小费吗?
通常最好的方法是把你想做的事情传递Context
给你的新类的构造函数。这样,您就可以使用它来调用属于Activity
.
下面是一个示例,它应该可以帮助您解决问题:
private Context context;
// ...
public HelperClass(Context c){
context = c;
}
// ...
context.getPackageManager();
然后,您可以通过在初始化新类时添加 Context 来调用它:
new HelperClass(this);
尽管在某些情况下,例如从片段中,您可能必须提供getActivity();
.
new HelperClass(getActivity());
尝试如上所示编辑您的课程,如果您发现任何改进,请告诉我们。
如评论中所述,除非您打算使用上下文来编辑视图等,否则最好context = c.getApplicationContext();
在构造函数中使用。