我有一个应用程序显示带有来自 android Volley 的 NetworkImageView 小部件的片段。
在 NetworkImageView 中加载的 URL 上的图像每 5 秒更改一次,因此我想通过按我在操作栏中创建的重新加载按钮来更新此图像。
我发现了2个问题:
如果我再次调用此代码以加载图像(在 onActivityCreated() 方法创建片段时已调用它):
mNetworkImageView = (NetworkImageView) getView().findViewById(R.id.networkImageView); mImageLoader = VolleySingleton.getInstance(getActivity()).getImageLoader(); mNetworkImageView.setImageUrl(IMAGE_URL, mImageLoader);
所以什么都不会发生(它不是该链接的实际 IMG),我认为这是因为它现在是从缓存而不是从 Internet 加载 IMG。
如果我调用片段 reload() 方法:
public void reload(){ MainActivity activity = (MainActivity) getActivity(); IMAGE_URL = activity.getMyData(); mNetworkImageView = (NetworkImageView) getView().findViewById(R.id.networkImageView); mImageLoader = VolleySingleton.getInstance(getActivity()).getImageLoader(); mNetworkImageView.setImageUrl(IMAGE_URL, mImageLoader);
来自 MainActivity:
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.action_reload) {
ViewFragment fragment = new ViewFragment();
fragment.reload();
}
return super.onOptionsItemSelected(item);
}
单击操作栏重新加载按钮后,应用程序出现 NullPointerException 错误。
重载();方法是我想重新加载 NetworkImageView 的地方。
有人可以解释一下如何解决这个问题吗?