在onCreate中开始一项新活动只能延迟

zid*_*sk8 7 java android android-activity

我有一个简单的活动,只显示两个按钮,我想加载另一个活动.

@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);
}
Run Code Online (Sandbox Code Playgroud)

我没有使用此代码的任何错误,但新活动无法正确加载.这样我只能获得一个空白屏幕.

但如果我延迟调用新活动,那么一切正常.

@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);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

有没有更好的方法等待活动完成加载.我甚至无法确定每次500毫秒就足够了.

谢谢你的任何建议.

请求dr_popup的代码(这很简单)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    dbg("Created new activity");

    setContentView(R.layout.dr_webview);
    dbg("web view created");

}
Run Code Online (Sandbox Code Playgroud)

和两种布局

主要

<?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>
Run Code Online (Sandbox Code Playgroud)

弹出

<?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>
Run Code Online (Sandbox Code Playgroud)

编辑:问题似乎是由清单行@android:style/Theme.Dialog引起的

    <activity android:theme="@android:style/Theme.Dialog"
              android:name=".DrPopup"
              android:label="@string/dr_popup">
    </activity>
Run Code Online (Sandbox Code Playgroud)

如果我删除它,事情似乎工作,但我想要一个甚至可以使用该行的解决方案.

以及显示问题的图片.http://i.imgur.com/ZOcyw.png

Ren*_*aud 5

我没有从提供的代码中看到任何原因为什么你必须插入500毫秒的延迟...这只是插入延迟的无意义.需要做出一些澄清:1.您是否在原始活动中进行了大量处理?2.有意调用startActivityForResult(因为你的代码片段没有显示任何onActivityResult实现)?

我将尝试实现一个最小的示例并尽快更新帖子...

- 更新

在多次尝试通过并行聊天会话理解并解决此问题后,我在新的1.5仿真器上重现了该问题.问题最终来自于对被调用者活动使用android:theme ="@ android:style/Theme.Dialog".在Android 1.5(设备和模拟器)上观察到该问题.无论在第二个布局中声明什么,每当启动相关活动时,都不会显示任何内容.显示屏只是空白,按下后退按钮会启动活动的瞬时显示,但会转到第一个活动(后面的部分是名义上的).我无法解释为什么会发生这种情况,我建议zidarsk8尝试PopupWindow或定义自定义样式(基于android Theme.Dialog源定义的试用/错误方法).