Je tente d'afficher un ProgressDialog indéterminé en saisissant un flux RSS. Je fais apparaître la boîte de dialogue, mais dès que les résultats sont renvoyés, j'obtiens une force proche. Mon soupçon est que l'adaptateur est rempli et va mettre à jour l'interface utilisateur. Le code est ci-dessous. Est-ce que mes soupçons sont corrects?Android Force Close sur ProgressDialog
public void getRSS(String rss)
{
new GetRSS().execute(rss);
}
private class GetRSS extends AsyncTask<String, Void, Void>
{
private ProgressDialog Dialog = new ProgressDialog(View2.this);
protected void onPreExecute() {
Dialog.setMessage("Please wait...");
Dialog.show();
}
protected void onPostExecute(Void nothing)
{
Dialog.dismiss();
}
protected Void doInBackground(String... rss) {
URL feedUrl;
try
{
feedUrl = new URL(rss[0]);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
List entries = feed.getEntries();
Iterator iterator = entries.listIterator();
while (iterator.hasNext())
{
SyndEntry ent = (SyndEntry) iterator.next();
String title = ent.getTitle();
//String uri = ent.getUri();
//d.add(uri);
SyndContent content = (SyndContent)ent.getContents().get(0);
d.add(content.getValue());
adapter.add(title);
}
adapter.notifyDataSetChanged();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (FeedException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
}
*/
est ici la décharge de la pile - clairement l'appel d'informer est la question. Maintenant, je suis juste de la difficulté à déterminer où appeler notifier:
01-22 12:02:28.701: ERROR/WindowManager(571): Activity com.digthisband.dtb.jg.View2 has leaked window [email protected] that was originally added here
01-22 12: 02: 28,701: ERREUR/WindowManager (571): android.view.WindowLeaked: Activité com.digthisband.dtb. jg.View2 a fui la fenêtre com.a[email protected] qui a été ajouté à l'origine ici 01-22 12: 02: 28.701: ERROR/WindowManager (571): at android.view.ViewRoot. (ViewRoot.java:247) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à l'adresse android.view.WindowManagerImpl.addView (WindowManagerImpl.java:148) 01-22 12: 02: 28.701: ERROR/WindowManager (571): at android.view.WindowManagerImpl.addView (WindowManagerImpl.java:91) 01-22 12: 02: 28.701: ERREUR/WindowManager (571): à l'adresse android.view.Window $ LocalWindowManager.addView (Window.java:424) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à l'adresse android.app.Dialog.show (Dialog.java:241) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à l'adresse com.digthisband.dtb.jg.View2 $ GetRSS.onPreExecute (View2.java:97) 01-22 12: 02: 28.701: ERROR/WindowManager (571): at android.os.AsyncTask.execute (AsyncTask.java:391) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à com.digthisband.dtb.jg.View2.getRSS (View2 .java: 87) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à l'adresse com.digthisband.dtb.jg.View2.onCreate (View2.java:68) 01-22 12: 02: 28.701 : ERREUR/WindowManager (571): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 01-22 12: 02: 28.701: ERREUR/WindowManager (571): at android.app.ActivityThre ad.performLaunchActivity (ActivityThread.java:2627) 01-22 12: 02: 28.701: ERREUR/WindowManager (571): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 01-22 12:02: 28.701: ERREUR/WindowManager (571): at android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 01-22 12: 02: 28.701: ERREUR/WindowManager (571): at android.app.ActivityThread $ H .handleMessage (ActivityThread.java:2033) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à l'adresse android.os.Handler.dispatchMessage (Handler.java:99) 01-22 12: 02: 28.701 : ERREUR/WindowManager (571): at android.os.Looper.loop (Looper.java:123) 01-22 12: 02: 28.701: ERREUR/WindowManager (571): at android.app.ActivityThread.main (ActivityThread .java: 4627) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à java.lang.reflect. Method.invokeNative (méthode native) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à java.lang.reflect.Method.invoke (Method.java:521) 01-22 12: 02: 28.701 : ERREUR/WindowManager (571): à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) 01-22 12: 02: 28.701: ERROR/WindowManager (571): à com.android .internal.os.ZygoteInit.main (ZygoteInit.java:626) 1 au 22 décembre: 02: 28,701: eRREUR/WindowManager (571): à dalvik.system.NativeStart.main (native Method)
Vous avez absolument raison - J'ai retiré l'appel à notifyDataSetChanged et le crash est parti. Je ne reçois pas mes données non plus. Mais c'est un début ... – voodoobilly
Voici la décharge: – voodoobilly
Heh ... eh bien, oui.La chose standard à faire est d'appeler publishProgress() à la place. Celui-ci appelle automatiquement onProgressUpdate() automatiquement dans le thread de l'interface utilisateur, où vous pouvez appeler notifyDataSetChanged(). Vous devrez remplacer onProgressUpdate(). – Jems