Iniciar una nueva actividad en onCreate sólo funciona con demora

Tengo una actividad simple que sólo muestra dos botones, y me gustaría cargar otra actividad tan pronto como se termina de cargar una.

@Override public void onCreate(Bundle savedInstanceState) { dbg("starting on create"); super.onCreate(savedInstanceState); dbg("stting content view"); setContentView(R.layout.main); createDrPopup(); } private void createDrPopup(){ dbg( "created new activity"); startActivityForResult(new Intent(this, DrPopup.class), DR_POPUP_ACTIVITY_ID); } 

No obtengo ningún error con este código, pero la nueva actividad no se carga correctamente. De esta manera sólo consigo una pantalla de blanc.

Pero si llamo a la nueva actividad con un retraso, entonces todo funciona bien.

 @Override public void onCreate(Bundle savedInstanceState) { dbg("starting on create"); super.onCreate(savedInstanceState); dbg("stting content view"); setContentView(R.layout.main); Thread splashTread = new Thread() { @Override public void run() { try { sleep(500); } catch(InterruptedException e) { } finally { createDrPopup(); } } }; splashTread.start(); } private void createDrPopup(){ dbg( "created new activity"); startActivityForResult(new Intent(this, DrPopup.class), DR_POPUP_ACTIVITY_ID); } 

Mi pregunta es la siguiente:

¿Hay alguna mejor manera de esperar a que una actividad termine de cargarse. Ni siquiera puedo estar seguro de que 500ms será suficiente cada vez.

Gracias por cualquier sugerencia.

Código solicitado para dr_popup (esto es tan simple como se pone)

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dbg("Created new activity"); setContentView(R.layout.dr_webview); dbg("web view created"); } 

Y ambos diseños

principal

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Spinner android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:id="@+id/spinner1"></Spinner> </LinearLayout> 

surgir

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dr_popup_webview_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dr_popup_webview" android:layout_width="fill_parent" android:layout_height="100dip"/> <LinearLayout android:id="@+id/frameLayout1" android:layout_height="100dip" android:layout_width="fill_parent" android:orientation="horizontal"> <EditText android:id="@+id/dr_submit_text" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="4"> <requestFocus></requestFocus> </EditText> <Button android:text="Button" android:id="@+id/dr_submit_button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1"></Button> </LinearLayout> </LinearLayout> 

Editar: el problema parece ser causado por la línea de manifiesto @android: style / Theme.Dialog

  <activity android:theme="@android:style/Theme.Dialog" android:name=".DrPopup" android:label="@string/dr_popup"> </activity> 

Si quito eso, las cosas parecen funcionar, pero me gustaría una solución que funcionaría incluso con esa línea.

Y una imagen que muestra el problema. Http://i.imgur.com/ZOcyw.png

No veo ninguna razón del código proporcionado porqué usted tiene que insertar un retraso de 500 ms … Ése es apenas un no sentido para insertar ese retraso. Algunas aclaraciones son necesarias: 1. ¿Hizo un procesamiento pesado dentro de la actividad original? 2. startActivityForResult se llama con propósito (ya que los fragmentos de código no muestra ninguna implementación onActivityResult)?

Voy a tratar de implementar un ejemplo mínimo y actualizar el asap pos …

– Actualización

Después de varios intentos de entender y solucionar este problema con una sesión de chat en paralelo, reproduje el problema en un emulador fresco de 1.5. El problema proviene del uso de android: theme = "@ android: style / Theme.Dialog" para la actividad de los llamados. El problema se observa en android 1.5 (dispositivo y emulador). Lo que se declare en el segundo diseño, siempre que se inicie la actividad asociada, no se muestra nada. La pantalla está en blanco y un botón de empuje en el botón de retroceso inicia una visualización transitoria de la actividad, pero pasa a la primera actividad (la parte posterior es nominal). No podría explicar porqué sucede esto y sugiero a zidarsk8 dar a PopupWindow un intento o definir un estilo de encargo (acercamiento de ensayo / error basado en la definición de la fuente de android Theme.Dialog).

  • Cómo eliminar MenuItems de menú de forma programática?
  • ProGuard para Android "java.lang.nosuchfielderror: Toast" excepción
  • android esperando respuesta del servidor
  • URL de MediaPlayer para Android con Cookie
  • ¿Cómo agregar animación mientras que la barra de acción está cambiando su contenido con Appcompat?
  • Java howto ArrayList push, pop, shift y unshift
  • IntelliJ IDEA 12 clase duplicada R.java y BuildConfig.java
  • Protocolos de alto nivel para Bluetooth / WiFi Direct Sockets?
  • Android: Cómo configurar una IP estática para una nueva configuración WiFi
  • Android: manejar la desconexión inesperada de Internet durante la descarga de datos
  • Regex para eliminar espacios entre números solamente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.