我在FragmentActivity
的第一个标签中有TabHost
,FragmentActivity
本身包含ViewPager
。
ViewPager
的{{1}}方法设置setAdapter()
一组FragmentPagerAdapter
s。目标是在Fragment
的第一个窗格中显示可滑动的图像。
为了测试它,我正在加载一堆我在本地项目的TabHost
目录中保存的图像。 一切都很美好。
在测试了这个初始设置之后,我从REST Web服务下载了一堆图像URL。我希望这些图片在drawable
中延迟加载,我尝试在三个地方调用Picasso的ViewPager
方法:
load()
onCreateView()
的{{1}}方法(我之前从本地ViewPager
目录加载图片的地方)。< / p>
Fragment
drawable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.layout_fragment, container, false);
ImageView imageView = (ImageView)getView().findViewById(R.id.fragment_image);
String url = getArguments().getString(IMAGE_RESOURCE_URL);
Context context = getActivity();
Picasso.with(context).load(url).fit().into(imageView);
return myFragmentView;
}
的{{1}}方法。
onViewCreated()
ViewPager
的{{1}}方法。
Fragment
这些方法都不起作用。我知道这不是毕加索的问题,因为有一天我尝试在@Override
public void onViewCreated(View view, Bundle savedInstanceState){
Context context = getActivity();
String url = getArguments().getString(IMAGE_RESOURCE_URL);
ImageView imageView = (ImageView)view.findViewById(R.id.fragment_image);
Picasso.with(context).load(url).fit().into(imageView);
}
中使用毕加索,它就像一个魅力。我做错了什么?
答案 0 :(得分:1)
您的第一种方法应该可以正常工作......如果您正确实施它。我希望你的代码会崩溃NullPointerException
。
替换:
ImageView imageView = (ImageView)getView().findViewById(R.id.fragment_image);
使用:
ImageView imageView = (ImageView)myFragmentView.findViewById(R.id.fragment_image);
答案 1 :(得分:0)
您的延迟加载程序应该在
的上下文中工作Fragment.createView()
其中Fragment是由ViewPager和FragmentpagerAdapter分页的集合之一
这是你的选择之一。
我使用另一个lazyloader来管理加载图像所需的位图的本地memcache和本地filesys缓存。在“OnCreateView()”时,如果位图尚未缓存,它将进入网络以获取加载器的URL。