我有一个片段,显示带有远程图像的图像滑块(我使用过AndroidImageSlider库)。在OnCreateView中,我做了一个截击请求,在那里我得到了图像的网址。问题是volley是异步,并且滑块得到NUllPointerException,因为OnCreateView没有等待带有url的响应。
如何加载片段并告诉滑块等待网址?
这是一个只有一个图像的代码示例(为了简洁)。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_apartment, container, false);
getApartmentData(); // volley request. It set the image_url field
// image slider
imgSlider = (SliderLayout) view.findViewById(R.id.img_slider);
imgSlider.stopAutoCycle();
HashMap<String,String> url_maps = new HashMap<String, String>();
url_maps.put("name1", image_url);
for(String name : url_maps.keySet()){
DefaultSliderView defaultSliderView = new DefaultSliderView(getActivity());
defaultSliderView
.image(url_maps.get(name))
.setScaleType(BaseSliderView.ScaleType.Fit)
.setOnSliderClickListener(this);
imgSlider.addSlider(defaultSliderView);
}
imgSlider.setPresetTransformer(SliderLayout.Transformer.Default);
imgSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
imgSlider.setDuration(4000);
imgSlider.addOnPageChangeListener(this);
}
答案 0 :(得分:0)
我解决了将此代码放入截击请求的OnResponse中的问题:
HashMap<String,String> url_maps = new HashMap<String, String>();
url_maps.put("name1", image_url);
for(String name : url_maps.keySet()){
DefaultSliderView defaultSliderView = new DefaultSliderView(getActivity());
defaultSliderView
.image(url_maps.get(name))
.setScaleType(BaseSliderView.ScaleType.Fit)
.setOnSliderClickListener(this);
imgSlider.addSlider(defaultSliderView);
}