Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 27/04/13, 01:11:10
Array

[xs_avatar]
aitor6381 aitor6381 no está en línea
Miembro del foro
 
Fecha de registro: ene 2013
Mensajes: 214
Modelo de smartphone: Mi Mix 2s
Tu operador: Movistar
Post Error ProgressDialog?

Hola a todos, vereis, estoy haciendo una aplicacion (desarrollada a partir de un lector feed) que lee unos canales RSS y muestra los canales en la pantalla. Bien la aplicación va bastante sin bien sin problemas hasta que, como tardaba un rato en cargar, intenté poner un ProgressDialog, y ya llevo aquí sentado frente al PC un buen rato buscando la solución y no la encuentro. Os dejo el código:

PD: Perdón por lo desorganizado que está, ahora lo estoy montando y ya cuando esté listo y vaya bien lo perfilaré :P

Código:
package com.NGDSystem.ZimbaliCopasApp;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TabHost;
import com.NGDSystem.ZimbaliCopasApp.Noticia.*;
import com.slidingmenu.lib.SlidingMenu;



public class Two extends Activity {
	

	private ListView listvEventos;		
	private ListView listvNoticia;

	private  URL url;			
	private  URL url2;
	private ArrayList<Noticia> noticias;	
	private ArrayList<Noticia> noticias2;
	private String[] titulos;	
	private String[] titulos2;
	
	public void crearMenu() {
		SlidingMenu menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        menu.setMenu(R.layout.activity_menu);
        menu.setBehindOffset(1000);
        menu.setSelectorEnabled(true);
        menu.setSelectorDrawable(R.drawable.sel);
        menu.setShadowWidth(10);
        menu.setShadowDrawable(com.NGDSystem.ZimbaliCopasApp.R.drawable.shadow);
		
        String[] titleMenu = new String[]{"Ajustes","Licencia","Creditos","Contactar","Valorar"};
        ListView listvMenu;
        	 
        	ArrayAdapter<String> adapMenu = new ArrayAdapter<String>(this,com.NGDSystem.ZimbaliCopasApp.R.layout.listview, titleMenu);
        	listvMenu = (ListView)findViewById(R.id.listMenu);
        	listvMenu.setAdapter(adapMenu);
 
	}
	

    @SuppressLint({ "NewApi", "NewApi", "NewApi" })
	@Override
    public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);

        crearMenu();
        
        Resources res = getResources();
		 
		TabHost tabs=(TabHost)findViewById(android.R.id.tabhost);
		tabs.setup();
		 
		TabHost.TabSpec spec=tabs.newTabSpec("mitab1");
		spec.setContent(R.id.tab1);
		spec.setIndicator("EVENTOS",res.getDrawable(android.R.drawable.ic_dialog_map));
		tabs.addTab(spec);
		 
		spec=tabs.newTabSpec("mitab2");
		spec.setContent(R.id.tab2);
		spec.setIndicator("NOTICIAS",res.getDrawable(android.R.drawable.ic_dialog_map));
		tabs.addTab(spec);
		 
		tabs.setCurrentTab(0);
        
        listvEventos = (ListView) findViewById(R.id.listvEventos);
        listvNoticia = (ListView) findViewById(R.id.listvNoticia);
        
        noticias = new ArrayList<Noticia>();
        noticias2 = new ArrayList<Noticia>();

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        
		//PROGRESSDIALOG (ERROR)
		
        final ProgressDialog progressDialog = new ProgressDialog(Two.this);
        progressDialog.setTitle("Por favor espere");
        progressDialog.show();
        
        
        new Thread() { 
            public void run() {      
        
        try {
        	url = new URL("http://ep00.epimg.net/rss/tags/ultimas_noticias.xml");
			url2 = new URL("http://ep00.epimg.net/rss/tags/noticias_mas_vistas.xml");
			leerDatos();
			leerDatos2();
			
		} catch (MalformedURLException e) {
			
			e.printStackTrace();
		}
        progressDialog.dismiss(); 
            } 
       }.start();
            
        //FIN PROGRESSDIALOG (ERROR)
        
        
        ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,titulos);
        ArrayAdapter<String> adaptador2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,titulos2);
        
        
        listvEventos.setAdapter(adaptador);
        listvNoticia.setAdapter(adaptador2);
        
       
        
        listvEventos.setOnItemClickListener(new OnItemClickListener() {

        	
			public void onItemClick(AdapterView<?> adaptador, View vista, int posicion,
					long arg3) {
				
				
				
				Intent intent = new Intent (Two.this, Three.class);
				intent.putExtra("EVENTO", noticias.get(posicion));
				startActivity(intent);
				
			}
		});
        
        listvNoticia.setOnItemClickListener(new OnItemClickListener() {

        	
			public void onItemClick(AdapterView<?> adaptador2, View vista, int posicion,
					long arg3) {
				
				
				
				Intent intent = new Intent (Two.this, Three.class);
				intent.putExtra("EVENTO", noticias2.get(posicion));
				startActivity(intent);
				
			}
		});
        
        
    }


    public void leerDatos(){

    	XmlPullParserFactory factory;
    	XmlPullParser xml;
    	int evento;		
    	
    	boolean title;	
    	boolean link;	
    	boolean pubDate;	
    	boolean contentEncoded;	
    	
    	ArrayList<String> titles;	
    	ArrayList<String> links;	
    	ArrayList<String> pubDates;	
    	ArrayList<String> contentEncodeds;	
    	
    	int contador;
    	
    	titles = new ArrayList<String>();
    	links = new ArrayList<String>();
    	pubDates = new ArrayList<String>();
    	contentEncodeds = new ArrayList<String>();

    	contador = 0;

    	title = false;
    	link = false;
    	pubDate = false;
    	contentEncoded = false;
    	
    	try {
    	

			factory = XmlPullParserFactory.newInstance();
			xml = factory.newPullParser();
			xml.setInput(url.openStream(),"UTF-8");

			evento = xml.getEventType();

			while (evento != XmlPullParser.END_DOCUMENT){
				
				switch (evento) {
				
				case XmlPullParser.START_TAG:
				
					
					if (xml.getName().equals("title")){

						contador++;

						if (contador > 2){
							
							title = true;

						}
					}
					
					
					if (xml.getName().equals("link")){
						
						link = true;
					}
					
					
					if (xml.getName().equals("pubDate")){
						
						pubDate = true;
					}
					
					
					if (xml.getName().equals("content:encoded")){
						
						contentEncoded = true;
					}
					
					break;
				
					
				case XmlPullParser.TEXT:
					
					if (title){
						
						titles.add(xml.getText());
					}
					
					if (link){
						
						links.add(xml.getText());
					}
					
					if (pubDate){
						
						pubDates.add(xml.getText());
					}
					
					if (contentEncoded){
						
						contentEncodeds.add(xml.getText());
					}
					
					
					break;
					
				case XmlPullParser.END_TAG:
					
					if (xml.getName().equals("title")){
						
						title = false;
					}
					
					
					if (xml.getName().equals("link")){
						
						link = false;
					}
					
					
					if (xml.getName().equals("pubDate")){
						
						pubDate = false;
					}
					
					
					if (xml.getName().equals("content:encoded")){
						
						contentEncoded = false;
					}
					
					break;

				}
				
				evento = xml.next();
			}

			titulos = new String[contentEncodeds.size()];

			for (int i = 0; i < contentEncodeds.size(); i++) {
				

				noticias.add(new Noticia(titles.get(i), contentEncodeds.get(i), pubDates.get(i), links.get(i)));

				titulos[i] = titles.get(i);
			}

			
			
			
		} catch (XmlPullParserException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}

    	
    }
    
    
public void leerDatos2(){

    	
    	XmlPullParserFactory factory2;
    	XmlPullParser xml2;		
    	int evento2;			
    	
    	boolean title2;	
    	boolean link2;		
    	boolean pubDate2;		
    	boolean contentEncoded2;		
    	
    	ArrayList<String> titles2;	
    	ArrayList<String> links2;	
    	ArrayList<String> pubDates2;	
    	ArrayList<String> contentEncodeds2;	
    	
    	int contador2;		

    	titles2 = new ArrayList<String>();
    	links2 = new ArrayList<String>();
    	pubDates2 = new ArrayList<String>();
    	contentEncodeds2 = new ArrayList<String>();
    	
    	
    	contador2 = 0;
    	
    	
    	title2 = false;
    	link2 = false;
    	pubDate2 = false;
    	contentEncoded2 = false;
    	
    	try {
    	
    		
			factory2 = XmlPullParserFactory.newInstance();
			xml2 = factory2.newPullParser();
			xml2.setInput(url2.openStream(),"UTF-8");
			
			
			evento2 = xml2.getEventType();
			
			
			while (evento2 != XmlPullParser.END_DOCUMENT){
				
				switch (evento2) {
				
				case XmlPullParser.START_TAG:
				
					
					if (xml2.getName().equals("title")){
						
						
						contador2++;
						
						
						if (contador2 > 2){
							
							title2 = true;

						}
					}
					
					
					if (xml2.getName().equals("link")){
						
						link2 = true;
					}
					
					
					if (xml2.getName().equals("pubDate")){
						
						pubDate2 = true;
					}
					
					
					if (xml2.getName().equals("content:encoded")){
						
						contentEncoded2 = true;
					}
					
					break;
				
					
				case XmlPullParser.TEXT:
					
					if (title2){
						
						titles2.add(xml2.getText());
					}
					
					if (link2){
						
						links2.add(xml2.getText());
					}
					
					if (pubDate2){
						
						pubDates2.add(xml2.getText());
					}
					
					if (contentEncoded2){
						
						contentEncodeds2.add(xml2.getText());
					}
					
					
					break;
					
				case XmlPullParser.END_TAG:
					
					if (xml2.getName().equals("title")){
						
						title2 = false;
					}
					
					
					if (xml2.getName().equals("link")){
						
						link2 = false;
					}
					
					
					if (xml2.getName().equals("pubDate")){
						
						pubDate2 = false;
					}
					
					
					if (xml2.getName().equals("content:encoded")){
						
						contentEncoded2 = false;
					}
					
					break;

				}
				
				evento2 = xml2.next();
			}
			
			titulos2 = new String[contentEncodeds2.size()];

			for (int i = 0; i < contentEncodeds2.size(); i++) {

				noticias2.add(new Noticia(titles2.get(i), contentEncodeds2.get(i), pubDates2.get(i), links2.get(i)));

				titulos2[i] = titles2.get(i);
			}

			
			
			
		} catch (XmlPullParserException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}

    }

}
PD: Esto es solo una actividad, hay más.
PD: No se si influye o si es de interés para conseguir la solución... cuando paso a esta activity, hasta que no cargan los datos no aparece nada, es decir, no se representan las tabs ni nada de eso.

Última edición por aitor6381 Día 27/04/13 a las 01:13:44.
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android

Herramientas


Hora actual: 20:29:48 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /