Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在onCreate中启动新活动只会延迟_Java_Android_Android Activity - Fatal编程技术网

Java 在onCreate中启动新活动只会延迟

Java 在onCreate中启动新活动只会延迟,java,android,android-activity,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); createDr

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

@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);
}
我没有发现这段代码有任何错误,但是新活动没有正确加载。这样我只得到了一个白屏幕

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

@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);
}
我的问题是:

是否有更好的方法等待活动完成加载。我甚至不能确定每次500毫秒是否足够

谢谢你的建议

为dr_弹出窗口请求的代码(这很简单)

以及两种布局

主要


弹出窗口


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


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

我将尝试实现一个最小的例子,并更新后尽快

−− 更新

在几次尝试通过并行聊天会话来理解和解决这个问题之后,我在一个新的1.5模拟器上重现了这个问题。
问题最终来自对被调用方活动使用android:theme=“@android:style/theme.Dialog”。在android 1.5(设备和模拟器)上可以观察到这个问题。无论在第二个布局中声明了什么,只要关联的活动启动,都不会显示任何内容。显示为空白,按下后退按钮启动活动的瞬态显示,但转到第一个活动(后面的部分为标称)。我无法解释为什么会发生这种情况,我建议zidarsk8给PopupWindow一个尝试或定义一个自定义样式(基于android主题的尝试/错误方法。对话框源定义)。

您好,您还可以提供DrPopup的代码吗。嗯,我不确定,但是,当另一个活动仍在onCreate()生命周期方法中时,ActivityManager可能无法处理启动新活动的问题。计时器允许onCreate()有足够的时间来完成…我已经添加了代码和xml文件,我应该添加我正在使用android 1.5。我同意这完全是胡说八道,这就是我在这里要问的,因为我不知道为什么只有延迟才能起作用。但情况似乎是这样。我刚从onStart开始尝试,但结果是一样的,没有延迟地启动会使新活动没有任何按钮或任何东西。它在这里毫不延迟地工作(具有简单的startActivity),除了WebView出现在其他布局元素之后。我用我在这里发布的代码再次尝试id,它可以工作,但是有一件事我忘了发布清单文件。多亏了你,我现在知道问题出在这行
android:theme=“@android:style/theme.Dialog”
it如果你把它放在第二个活动中,事情可能不会正常进行,从你的屏幕截图中,我意识到你是指使用popup;)弹出窗口顺便问一下,为什么不使用弹出窗口呢?
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    dbg("Created new activity");

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

}
<?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>
<?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>
    <activity android:theme="@android:style/Theme.Dialog"
              android:name=".DrPopup"
              android:label="@string/dr_popup">
    </activity>