正如标题所说,我在我的片段中创建了一个ImageView。
private void initBanner(String imgUrl) {
ImageView iv = new ImageView(getActivity());
iv.setScaleType(ScaleType.FIT_XY);
BitmapUtils bitmapUtils = new BitmapUtils(getActivity());
bitmapUtils.display(iv, imgUrl, new BitmapLoadCallBack<View>() {
@Override
public void onLoadCompleted(View arg0, String arg1, Bitmap arg2,
BitmapDisplayConfig arg3, BitmapLoadFrom arg4) {
Bitmap arg = arg2;
arg2 = null;
arg2 = new WeakReference<Bitmap>(arg).get();
((ImageView) arg0).setImageBitmap(arg2);
}
@Override
public void onLoadFailed(View arg0, String arg1, Drawable arg2) {
}
});
bannerList.add(iv);
}
而且,我的活动扩展到了FragmentActivity。 它并不总是发生,有时或某种特殊类型。我已经构建了一个bug 我的应用程序的收集器,所以我可以看到是什么引起的。这是一些错误信息:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
at android.view.ViewConfiguration.get(ViewConfiguration.java:365)
at android.view.View.<init>(View.java:3791)
at android.widget.ImageView.<init>(ImageView.java:131)
at bb.h.b(SourceFile:301)
at bb.h.a(SourceFile:242)
at bb.h.a(SourceFile:239)
at bb.i.handleMessage(SourceFile:129)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
也是这样的:
java.lang.NullPointerException
at miui.util.UiUtils.getMiuiUiVersion(UiUtils.java:100)
at miui.util.UiUtils.isV5Ui(UiUtils.java:108)
at android.view.Injector$ViewConfigurationHook.get(Injector.java:173)
at android.view.ViewConfiguration.get(ViewConfiguration.java:336)
at android.view.View.<init>(View.java:3453)
at android.widget.ImageView.<init>(ImageView.java:114)
at bb.h.b(SourceFile:301)
at bb.h.a(SourceFile:242)
at bb.h.a(SourceFile:239)
at bb.i.handleMessage(SourceFile:129)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5050)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:805)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621)
at dalvik.system.NativeStart.main(Native Method)
NullPointerException都指向第301行。
ImageView iv = new ImageView(getActivity());
我已经考虑过这个错误了。也许活动是一个背景过程,不幸的是被回收了。然后我恢复它,片段找不到它的附加活动。所以我这样做:
if (savedInstanceState != null) {
String FRAGMENTS_TAG = "android:support:fragments";
// remove掉保存的Fragment
savedInstanceState.remove(FRAGMENTS_TAG);
}
并覆盖onSavedInstance活动方法:
@Override
protected void onSaveInstanceState(Bundle outState) {
}
但这无助,我仍然是Android的新手。请告诉我如何解决这个问题,非常感谢。
答案 0 :(得分:0)
如果您可以将p
中创建的代码放在p
中,可能会有所帮助。但是,通过此链接link,您可以看到直接使用Fragment
中的Activity
可能会遇到同样的问题。希望这会有所帮助。
getActivity
此外,在调用getActivity()之前使用片段检查isAdded是一个很好的做法。当片段与活动分离时,这有助于避免空指针异常。例如,活动可能包含推送异步任务的片段。任务完成后,将调用onTaskComplete侦听器。
Fragment