gpt4 book ai didi

java - 在 onCreate 中开始新 Activity 仅适用于延迟

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:01 24 4
gpt4 key购买 nike

我有一个只显示两个按钮的简单 Activity ,我想在另一个 Activity 完成加载后立即加载另一个 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);
}

我没有收到此代码的任何错误,但新 Activity 未正确加载。这样我只能得到一个白屏。

但如果我延迟调用新 Activity ,那么一切正常。

@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);
}

我的问题是:

有没有更好的方法来等待 Activity 完成加载。我什至不能确定每次 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");

}

和两种布局

主要

<?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>

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

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

如果我删除它,一切似乎都有效,但我想要一个即使在该行也能工作的解决方案。

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

最佳答案

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

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

-- 更新

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

关于java - 在 onCreate 中开始新 Activity 仅适用于延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6537922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com