Problema ProgressDialog (caricamento...)
ciao a tutti
ho un problema: ho un'app che disegna grafici e per elaborare i dati e salvare tutti i punti ci mette tipo 4 o 5 secondi
in questo intervallo vorrei visualizzare una finestrina con scritto tipo waiting...
Ho provato a usare la progressdialog ma mi da un errore dopo aver visualizzato la finestra di caricamento
ERRORE:
codice:
07-16 20:27:09.797: E/AndroidRuntime(11754): FATAL EXCEPTION: AsyncTask #1
07-16 20:27:09.797: E/AndroidRuntime(11754): java.lang.RuntimeException: An error occured while executing doInBackground()
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.os.AsyncTask$3.done(AsyncTask.java:200)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.lang.Thread.run(Thread.java:1096)
07-16 20:27:09.797: E/AndroidRuntime(11754): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.ViewRoot.requestLayout(ViewRoot.java:594)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.View.requestLayout(View.java:8125)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.ViewGroup.addView(ViewGroup.java:1863)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.ViewGroup.addView(ViewGroup.java:1822)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.view.ViewGroup.addView(ViewGroup.java:1802)
07-16 20:27:09.797: E/AndroidRuntime(11754): at com.example.tablayout.Graficas.GraficoTutteTemperature(Graficas.java:918)
07-16 20:27:09.797: E/AndroidRuntime(11754): at com.example.tablayout.Graficas$HttpGetTask.doInBackground(Graficas.java:944)
07-16 20:27:09.797: E/AndroidRuntime(11754): at com.example.tablayout.Graficas$HttpGetTask.doInBackground(Graficas.java:1)
07-16 20:27:09.797: E/AndroidRuntime(11754): at android.os.AsyncTask$2.call(AsyncTask.java:185)
07-16 20:27:09.797: E/AndroidRuntime(11754): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-16 20:27:09.797: E/AndroidRuntime(11754): ... 4 more
07-16 20:27:11.767: E/WindowManager(11754): Activity com.example.tablayout.TabLayout has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f3b6b0 that was originally added here
07-16 20:27:11.767: E/WindowManager(11754): android.view.WindowLeaked: Activity com.example.tablayout.TabLayout has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f3b6b0 that was originally added here
07-16 20:27:11.767: E/WindowManager(11754): at android.view.ViewRoot.<init>(ViewRoot.java:247)
07-16 20:27:11.767: E/WindowManager(11754): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
07-16 20:27:11.767: E/WindowManager(11754): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
07-16 20:27:11.767: E/WindowManager(11754): at android.view.Window$LocalWindowManager.addView(Window.java:424)
07-16 20:27:11.767: E/WindowManager(11754): at android.app.Dialog.show(Dialog.java:241)
07-16 20:27:11.767: E/WindowManager(11754): at android.app.ProgressDialog.show(ProgressDialog.java:107)
07-16 20:27:11.767: E/WindowManager(11754): at android.app.ProgressDialog.show(ProgressDialog.java:95)
07-16 20:27:11.767: E/WindowManager(11754): at com.example.tablayout.Graficas$6.onClick(Graficas.java:133)
07-16 20:27:11.767: E/WindowManager(11754): at android.view.View.performClick(View.java:2408)
07-16 20:27:11.767: E/WindowManager(11754): at android.view.View$PerformClick.run(View.java:8816)
07-16 20:27:11.767: E/WindowManager(11754): at android.os.Handler.handleCallback(Handler.java:587)
07-16 20:27:11.767: E/WindowManager(11754): at android.os.Handler.dispatchMessage(Handler.java:92)
07-16 20:27:11.767: E/WindowManager(11754): at android.os.Looper.loop(Looper.java:123)
07-16 20:27:11.767: E/WindowManager(11754): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-16 20:27:11.767: E/WindowManager(11754): at java.lang.reflect.Method.invokeNative(Native Method)
07-16 20:27:11.767: E/WindowManager(11754): at java.lang.reflect.Method.invoke(Method.java:521)
07-16 20:27:11.767: E/WindowManager(11754): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-16 20:27:11.767: E/WindowManager(11754): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-16 20:27:11.767: E/WindowManager(11754): at dalvik.system.NativeStart.main(Native Method)
07-16 20:27:12.537: I/Process(11754): Sending signal. PID: 11754 SIG: 9
come posso fare?
P.S. ho preso pezzi di codice da esempi su questo forum e su internet, quindi può darsi che ci siano errori anche per questo
allego pezzi di codice
codice:
Button jBtnCrea3 = (Button) this.findViewById(R.id.button3);
jBtnCrea3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//barra caricamento di 6 secondi, solo che inizia quando inizia il grafico!!
pd = ProgressDialog.show(Graficas.this,"Creando il grafico","Connecting...",true,false);
// creo e avvio asynctask
HttpGetTask task = new HttpGetTask();
task.execute("ciao");
}
});
codice:
private class HttpGetTask extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... params) {
String result = null;
// aggiorno la progress dialog
publishProgress("Attendere prego");
//QUESTO È IL METODO CHE CI METTE SECOLI!!!
GraficoTutteTemperature();
return result;
}
@Override
protected void onProgressUpdate(String... values) {
// aggiorno la progress dialog
pd.setMessage(values[0]);
}
@Override
protected void onPostExecute(String result) {
// chiudo la progress dialog
pd.dismiss();
}
}
GRAZIE 1000