Intereting Posts
XML против JSON. Какой из них лучше хранить небольшую часть данных? Список массивов Intent extra в Java Разница между OnTouchListener и OnClickListener Android; MapView, как я могу установить местоположение по умолчанию? Android ListView с быстрым индексом прокрутки и алфавитного раздела Легкий способ аутентификации запросов POST от клиента Google Android к Google App Engine? Возможно ли поддерживать функцию setScrollY () (ScrollView API 14), подобную функции для более старых уровней API? Изменение системной даты Android-телефона при нажатии кнопки с помощью приложения android Проверьте, существует ли файл на SD-карте на Android Запустить задачу Async в рабочем потоке Как узнать, изменилось ли пользователь состояние кнопки переключения? Что? Android: attr / listPreferredItemHeight делает и как? Приложение не отображается в последних списках приложений Вращающийся телефон перезапускает видео на Android Запуск эмулятора для AVD avd PANIC: Не удалось открыть: avd – Ubuntu 13.10

Начало нового действия в onCreate работает только с задержкой

У меня есть простая активность, которая показывает только две кнопки, и я хотел бы загрузить другую активность, как только она будет завершена.

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

Я не получаю никаких ошибок с этим кодом, но новая активность не загружается должным образом. Таким образом, я получаю только экран blanc.

Но если я вызову новую активность с задержкой, тогда все будет хорошо.

 @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_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> 

Edit: проблема, похоже, вызвана манифестной линией @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

Solutions Collecting From Web of "Начало нового действия в onCreate работает только с задержкой"

Я не вижу никакой причины из предоставленного кода, почему вам нужно вставить задержку в 500 мс … Это просто не смысл вставить эту задержку. Необходимы некоторые разъяснения: 1. Выполняли ли вы тяжелую обработку в рамках первоначальной деятельности? 2. startActivityForResult вызывается с целью (поскольку в ваших фрагментах кода нет реализации onActivityResult)?

Я попытаюсь реализовать минимальный пример и обновить сообщение как можно скорее …

– Обновление

После нескольких попыток понять и исправить эту проблему в параллельном сеансе чата я воспроизвел проблему на новом эмуляторе 1.5. Проблема окончательно исходит от использования android: theme = "@ android: style / Theme.Dialog" для активности вызываемого абонента. Проблема наблюдается на android 1.5 (как на устройстве, так и на эмуляторе). Независимо от того, что объявлено во втором макете, всякий раз, когда запущена связанная с ней деятельность, ничего не отображается. Дисплей просто пуст, и нажатие на кнопку «назад» инициирует переходное отображение активности, но переходит к первому действию (более поздняя часть является номинальной). Я не мог объяснить, почему это происходит, и я предлагаю zidarsk8 дать PopupWindow попробовать или определить собственный стиль (пробный / ошибочный подход, основанный на определении источника android Theme.Dialog).