Tengo una actividad simple que solo muestra dos botones, y me gustaría cargar otra actividad tan pronto como termine de cargarse.iniciar una nueva actividad en onCreate funciona solo con retraso
@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 actividad nueva no se carga correctamente. De esta manera solo obtengo una pantalla en blanco.
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 forma mejor esperar a que una actividad se termine de cargar. Ni siquiera puedo estar seguro de que 500ms sean suficientes 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
principales
<?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>
emergente
<?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>
edición: la problema EMS para ser causada por el manifiesto de la línea @android: Estilo/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 trabajar aún con esa línea.
y una imagen que muestra el problema. http://i.imgur.com/ZOcyw.png
Hola también puede proporcionar el código para DrPopup. – Deva
Bueno, no estoy seguro, pero tal vez el ActivityManager no puede manejar el inicio de una nueva actividad cuando otra actividad todavía está en el método de ciclo de vida onCreate(). El temporizador permite suficiente tiempo para que onCreate() complete ... –
He agregado el código y los archivos xml también, y debo agregar que estoy trabajando en Android 1.5 – zidarsk8