我正在尝试在用户尝试下载某些内容时显示一个对话框,但是当该对话框被解除时,该应用程序会重定向回到之前的表单页面。下载有效,但下一个表格没有;只是继续显示“加载”对话框并返回上一个表单。
循环表单已在下面的代码中注释掉。
ConnectionRequest request = new ConnectionRequest();
// InfiniteProgress ip = new InfiniteProgress();
// Dialog dlg = ip.showInifiniteBlocking();
// request.setDisposeOnCompletion(dlg);
Hashtable param_data_url = new Hashtable();
param_data_url.put("index", 0);
param_data_url.put("rango", 10);
param_data_url.put("ciudad_id", Constants.CodigoCiudadActual);
String urlBusqueda = Constants.URL_SERVICIO_SHOW_PRODUCTOS_ADOM_MOVIL;
String url_conexion = Constants.getUrlServicio(Constants.URL_SERVIDOR_APLICACION, Constants.URL_APLICACION, urlBusqueda, param_data_url);
request.setUrl(url_conexion);
request.addResponseListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
NetworkEvent netEvt = (NetworkEvent) evt;
byte[] dataArray = (byte[]) netEvt.getMetaData();
try {
JSONParser p = new JSONParser();
InputStream is = new ByteArrayInputStream(dataArray);
Hashtable h = p.parse(new InputStreamReader(is));
Enumeration enumCate = h.elements();
productoDelegado proDel = new productoDelegado();
imagenDelegado imaDel = new imagenDelegado();
while (enumCate.hasMoreElements()) {
Hashtable aux = (Hashtable) enumCate.nextElement();
Enumeration enumCate2 = aux.elements();
while (enumCate2.hasMoreElements()) {
Hashtable aux2 = (Hashtable) enumCate2.nextElement();
Enumeration enumCate3 = aux2.elements();
String[] param = new String[8];
param[0] = ((Hashtable) aux2.get("DomPro")).get("producto_id").toString();
param[1] = ((Hashtable) aux2.get("Producto")).get("nombre").toString();
param[2] = ((Hashtable) aux2.get("Producto")).get("precio").toString();
param[3] = ((Hashtable) aux2.get("Producto")).get("tienda_id").toString();
param[4] = ((Hashtable) aux2.get("Producto")).get("calificacion").toString();
param[5] = ((Hashtable) aux2.get("Imagen")).get("id").toString();
param[6] = ((Hashtable) aux2.get("Producto")).get("tipo").toString();
param[7] = "1";
try {
Imagen ima = new Imagen();
ima.setId(param[5]);
Producto prod = new Producto(param[0], param[1], "", param[2], "", param[4], param[3], ima, "", 0, 0, null, param[6], param[7]);
if (proDel.existProducto(Integer.valueOf(param[0]))) {
proDel.createProducto(prod);
}
} catch (Exception ex) {
System.out.println("Error insertanto producto");
}
String[] paramIma = new String[3];
paramIma[0] = ((Hashtable) aux2.get("Imagen")).get("id").toString();
System.out.println(paramIma[0]);
paramIma[1] = ((Hashtable) aux2.get("Imagen")).get("url").toString();
System.out.println(paramIma[1]);
if(!((Hashtable) aux2.get("Imagen")).get("name").toString().equalsIgnoreCase("default.jpg")){
Vector nombre = split(((Hashtable) aux2.get("Imagen")).get("name").toString(), ".");
paramIma[2] = nombre.elementAt(0).toString() + ".thumb." + nombre.elementAt(1).toString();
}else{
paramIma[2]=((Hashtable) aux2.get("Imagen")).get("name").toString();
}
Imagen ima = new Imagen(paramIma[0], paramIma[1], paramIma[2]);
try {
if (imaDel.existImagen(Integer.valueOf(ima.getId()))) {
imaDel.createImagen(ima);
}
} catch (Exception ex) {
System.out.println("Error insertanto producto");
}
}
}
//empieza a renderizar la lista
Vector vect = proDel.listProdDesta();
createContainer(getResourceFilePath(), "AvatarContProdDestacado");
Enumeration enumPro = vect.elements();
Vector VectorDatos = new Vector();
int i = 0;
while (enumPro.hasMoreElements()) {
Producto pro = (Producto) enumPro.nextElement();
Imagen imagenPro = imaDel.getImagen(Integer.valueOf(pro.getIcono_producto().getId()));
Hashtable dato = new Hashtable();
System.out.println(pro.getId());
dato.put("UrlImagen", Constants.URL_SERVIDOR_APLICACION + Constants.URL_APLICACION + imagenPro.getUrl() + imagenPro.getName());
dato.put("Producto_id", pro.getId());
dato.put("Label2", pro.getNombre());
dato.put("Label", pro.getPrecio());
cmp2.addItem(dato);
" timeout:"+is.getTimeout()
ImageDownloadService(dato.get("UrlImagen").toString(), cmp2, i, "avatar");
cmp2, i, "avatar", dato.get("Producto_id").toString(), new Dimension(100, 100), ImageDownloadService.PRIORITY_CRITICAL);
// NetworkManager.getInstance().addToQueue(ids);
System.err.println(dato.get("UrlImagen"));
ImageDownloadService ids = new ImageDownloadService(dato.get("UrlImagen").toString(), cmp2, i, "avatar");
// ids.setPriority(ImageDownloadService.PRIORITY_CRITICAL);
NetworkManager.getInstance().addToQueue(ids);
} catch (Exception ex) {
System.out.println("Error en la descarga de imagen ImageDownloadService.createImageToStorage");
}
i++;
}
cmp2.repaint();
} catch (Exception ex) {
System.err.println("error");
}
}
});
NetworkManager.getInstance().addToQueue(request);
}
});
}
return true;
}
答案 0 :(得分:0)
你的缩进和代码块使得这几乎无法阅读,你切断了呼叫的顶部,因此无法真正知道。但是,由于您从某种方法返回并返回一个值,我假设您的逻辑错误地期望addToQueue
是异步的同步行为。
尝试将addToQueue
更改为addToQueueAndWait
。