0

我在 aFragmentActivity的第一个选项卡中有 a TabHostFragmentActivity它本身包含 a ViewPager

的方法用一组ViewPagers设置 a 。目标是在.setAdapter()FragmentPagerAdapterFragmentTabHost

为了测试它,我加载了一堆我在项目drawable目录中本地保存的图像。一切都很顺利。

在测试了这个初始设置之后,我正在从 REST Web 服务下载一堆图像 URL。我希望这些图像在 中延迟加载,我尝试在三个地方ViewPager调用 Picasso 的方法:load()

  1. s的onCreateView()方法(与我之前从本地目录加载图像的位置相同)。ViewPagerFragmentdrawable

    @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;
    }
    
  2. onViewCreated()方法。ViewPager_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);      
    
    }        
    
  3. onInstantiateItem()方法FragmentPagerAdapter

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
    
        View v = inflater.inflate(R.layout.layout_fragment, container, false);
        Context context = Tab1Activity.this;
        String url = getItem(position).getArguments().getString("IMAGE_RESOURCE_URL");
        ImageView imageView = (ImageView)v.findViewById(R.id.fragment_image);
        Picasso.with(context).load(url).fit().into(imageView);
        return v;
    }
    

这些方法都不起作用。我知道毕加索不是问题,因为前几天我尝试在 a 中使用毕加索,ListView它就像一个魅力。我究竟做错了什么 ?

4

2 回答 2

1

您的第一种方法应该可以正常工作......如果您正确实施它。我希望您的代码与NullPointerException.

代替:

ImageView imageView = (ImageView)getView().findViewById(R.id.fragment_image);

和:

ImageView imageView = (ImageView)myFragmentView.findViewById(R.id.fragment_image);
于 2014-02-08T15:18:06.880 回答
0

你的惰性加载器应该在

片段.createView()

其中 Fragment 是由 ViewPager 和 FragmentpagerAdapter 分页的集合之一

那是你的选择之一。

我使用另一个惰性加载器来管理加载图像所需的位图的本地 memcache 和本地 filesys 缓存。在“OnCreateView()”时,如果位图尚未缓存,它将去网络获取加载程序的 URL。

于 2014-02-08T15:24:07.103 回答