[英]NullPointerException on ImageView in Fragment in FragmentPagerAdapter
I have a bunch of fragments in a FragmentPagerAdapter with one ImageView in side each fragment. 我在FragmentPagerAdapter中有一堆片段,每个片段旁边都有一个ImageView。 If I swipe really fast this error comes up:
如果我快速滑动,就会出现此错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wilsapp.wilsapp, PID: 21319
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.wilsapp.wilsapp.Fragments.BuyerHomePageFragment9$DownloadImageTask.onPostExecute(BuyerHomePageFragment9.java:212)
at com.wilsapp.wilsapp.Fragments.BuyerHomePageFragment9$DownloadImageTask.onPostExecute(BuyerHomePageFragment9.java:192)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
If I swipe slowly then it works perfectly fine. 如果我缓慢滑动,则效果很好。
Android Code (code is the same for each fragment. Code in AsyncTask): Android代码(每个片段的代码都相同。AsyncTask中的代码):
protected void onPostExecute(Bitmap result) {
try {
ImageView img = (ImageView) getView().findViewById(R.id.ProductOneImageView);
img.setImageBitmap(result);
}catch (Exception e){
ImageView img = (ImageView) getView().findViewById(R.id.ProductOneImageView);
int id = getResources().getIdentifier("com.wilsapp.wilsapp:drawable/" + "error", null, null);
img.setImageResource(id);
}
}
Android onCreatView method: Android onCreatView方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_buyer_home_page, container, false);
return view;
}
how can i avoid the NullPointerException?
如何避免NullPointerException?
ImageView img = (ImageView) getView().findViewById(R.id.ProductFiveImageView);
ImageView need initialize in onCreateView. ImageView需要在onCreateView中初始化。 A case of you
getView()
return null... 您的情况
getView()
返回null ...
Add your initialization snippet in onViewCreated
method instead of onCreateView
. 在
onViewCreated
方法而不是onCreateView
添加您的初始化代码段。 it will ensure that imageview
will be initialize after your view is inflated. 它将确保您的视图膨胀后将初始化
imageview
。
@Override
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
ImageView img = (ImageView) view.findViewById(R.id.ProductFiveImageView);
img.setImageBitmap(result);
}
ImageView img = (ImageView) getView().findViewById(R.id.ProductFiveImageView);
您可以添加一个判断,getView是否为空,以及容错处理!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.