我将网址中的图片加载到位图中。下面的代码适用于以前扩展Fragment的类。这一次,我只是复制代码并尝试在扩展AppCompatActivity的类中使用它。唯一的区别是我如何获得背景。
public void loadBitmap(String url) {
if (loadtarget == null) loadtarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
handleLoadedBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
mContext = MyActivity.this;
Picasso.with(mContext).load(url).into(loadtarget); //giving me null
}
在原始代码中,我在片段中使用它,我把它作为
Picasso.with(getActivity()).load(url).into(loadtarget);
所以现在,因为这个类扩展了AppCompatActivity,我想我可以使用"这个"或者MyActivity.this但是没有用。我试过初始化一个Context变量" mContext"在onCreate中,在我将图像加载到位图之前(如上所述),但都没有工作。我已经尝试过this.getApplicationContext(),并且我还试图将mContext作为参数传递给loadBitmap()方法,但是它也没有用。
我的网址字符串是正确的。我不知道如何在尝试之后解决这个问题,看起来像是什么。
最后一条信息,例外:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:112)
at com.salty.seas.Driver.MyActivity.loadBitmap(MyActivity.java:144)
at com.salty.seas.Driver.MyActivity$1.onKeyEntered(MyActivity.java:61)
at com.firebase.geofire.GeoQuery$2.run(GeoQuery.java:126)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
答案 0 :(得分:0)
在对问题的评论中,您说的是loadBitmap()
所属的活动,您实际上是自己实例化(在其他一些片段中)并将其用作实用程序类。
您应该永远不会手动创建活动,因为他们由Android 管理,并且他们有生命周期的Android维护。
在您的情况下,活动未处于正确状态(其内部字段之一为空),这就是您获得NPE的原因。
对于实用程序方法,创建实用程序类并从任何地方调用它们。