27/04/13, 01:11:10
|
|
Miembro del foro
|
|
Fecha de registro: ene 2013
Mensajes: 214
Modelo de smartphone: Mi Mix 2s
Tu operador: Movistar
|
|
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.
|