J'ai un problème. J'ai besoin d'aller d'une activité à l'autre. Ma deuxième activité a une grande mise en page xml, avec beaucoup d'éléments (je parle environ de quatre cents aprox.), Puis cela prend quelques secondes (trop) pour montrer cette deuxième activité.Comment afficher un dialogue de progression entre deux activités?
Comment afficher une boîte de dialogue de progression entre deux activités? J'essaye d'utiliser une tâche de fond pour faire ceci.
J'ai cette méthode dans mon activité A:
private void goToYear() {
Intent intent = new Intent();
intent.setClass (getBaseContext(), YearActivity.class);
startActivity(intent);
}
Et dans mon activité B:
public class YearActivity extends Activity {
private String TAG = "YearActivity ::";
private ProgressDialog pd = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Show the ProgressDialog on this thread
this.pd = ProgressDialog.show(this, "Working...", "Calculating the screen...", true, false);
// Start a new thread that will download all the data
new MakeYearTask().execute();
}
private void initCalendar() {
this.setContentView(R.layout.calendar_year);
...
...
initialize values
...
...
}
private class MakeYearTask extends AsyncTask<String, Void, Object> {
protected Void doInBackground(String... args) {
Log.i("YearActivity::MakeYearTask", "MakeYearTask Background thread starting");
YearActivity.this.initCalendar();
}
protected void onPostExecute(Object result) {
if (YearActivity.this.pd != null) {
YearActivity.this.pd.dismiss();
}
}
}
}
Vous pouvez voir que je fais la setContentView
de la méthode onCreate
.
Cela ne fonctionne pas. Il me fait une exception, comme ceci:
12-09 19:49:17.729: ERROR/AndroidRuntime(218): java.lang.RuntimeException: An error occured while executing doInBackground()
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:234)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:258)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.util.concurrent.FutureTask.run(FutureTask.java:122)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.lang.Thread.run(Thread.java:1060)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.view.ViewRoot.checkThread(ViewRoot.java:2629)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.view.ViewRoot.requestLayout(ViewRoot.java:545)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.view.View.requestLayout(View.java:7657)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.view.ViewGroup.addView(ViewGroup.java:1749)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.view.ViewGroup.addView(ViewGroup.java:1731)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2186)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2239)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:309)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.app.Activity.setContentView(Activity.java:1620)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at es.jota.app.YearActivity.initCalendar(YearActivity.java:42)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at es.jota.app.YearActivity.access$0(YearActivity.java:41)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at es.jota.app.YearActivity.initCalendar$MakeYearTask.doInBackground(YearActivity.java:120)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at es.jota.app.YearActivity.initCalendar$MakeYearTask.doInBackground(YearActivity.java:1)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:256)
12-09 19:49:17.729: ERROR/AndroidRuntime(218): ... 4 more
Réponse comment créer une barre de progression entre deux activité [link] (http://stackoverflow.com/questions/1979524/android-splashscreen) –