Ich habe eine einfache Aktivität, die nur zwei Schaltflächen anzeigt, und ich möchte eine andere Aktivität laden, sobald diese fertig geladen ist.
@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);
}
Ich erhalte mit diesem Code keine Fehler, aber die neue Aktivität wird nicht richtig geladen. Auf diese Weise erhalte ich nur einen leeren Bildschirm.
Aber wenn ich die neue Aktivität mit einer Verzögerung aufrufe, dann funktioniert alles einwandfrei.
@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);
}
Meine Frage ist folgende:
Gibt es eine bessere Möglichkeit zu warten, bis eine Aktivität fertig geladen ist? Ich kann nicht einmal sicher sein, dass 500 ms jedes Mal genug sind.
Ich danke Ihnen für alle Vorschläge.
angeforderter Code für dr_popup (einfacher geht es nicht)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbg("Created new activity");
setContentView(R.layout.dr_webview);
dbg("web view created");
}
und beide Layouts
Haupt
<?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>
Popup
<?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>
edit: das Problem scheint durch die Manifestzeile verursacht zu werden @Android:style/Theme.Dialog
<activity android:theme="@android:style/Theme.Dialog"
android:name=".DrPopup"
android:label="@string/dr_popup">
</activity>
Wenn ich diese Zeile entferne, scheint alles zu funktionieren, aber ich hätte gerne eine Lösung, die auch mit dieser Zeile funktioniert.
und ein Bild, das das Problem zeigt. http://i.imgur.com/ZOcyw.png