Хобрук: Ваш путь к мастерству в программировании

Не удалось отобразить диалоговое окно/экран-заставку

Я пытаюсь создать заставку, которая будет отображаться во время инициализации моего приложения, используя метод диалога, обсуждаемый здесь:

http://blog.iangclifton.com/2011/01/01/android-splash-screens-done-right/

Тем не менее, независимо от того, что я делаю, экран-заставка никогда не появляется, экран просто остается черным, пока не будет полностью создан основной экран. Я вызываю m.dismiss() в конце метода setup().

Никаких ошибок не выдается, а файл launch.XML представляет собой просто линейный макет с шириной и высотой match_parent и с кнопкой, занимающей весь вид, но он никогда не появляется.

Я предполагаю, что либо контекст «ЭТОГО» должен быть чем-то другим, либо ширина/высота должны быть чем-то другим, кроме родительского соответствия... любые идеи/помощь будут оценены.

@Override
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  
    m = new Dialog(this,R.style.SplashScreen);
    m.setContentView(R.layout.launch);
    m.setCancelable(false);
    m.show();
    setContentView(R.layout.main);
    Handler h = new Handler();
    h.post( new Runnable(){
            public void run() {
        // TODO Auto-generated method stub  
                setup();
            }
    });

Файл LAUNCH.XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >
<Button android:text="Button" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/button1"></Button>

</LinearLayout>

Ответы:


1

ваш метод установки запускается в потоке пользовательского интерфейса. это предотвращает отображение спашскрина. Попробуйте использовать асинтаск для установки и отклоните всплеск в onPostExecute().

06.10.2011
  • Нет кубиков... Теперь код выглядит так: 06.10.2011
  • конечный класс InitializeTask расширяет AsyncTask‹Void, Void, Void› { protected void onPreExecute () { m.dismiss (); } protected void onPostExecute() { } @Override protected Void doInBackground(Void... params) { // TODO Автоматически сгенерированный метод-заглушка setup(); вернуть ноль; } } 06.10.2011
  • code @Override public void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); m = новый диалог (это, R.style.SplashScreen); m.setContentView(R.layout.launch); m.setCancelable (ложь); м.показать(); setContentView(R.layout.main); новый InitializeTask().execute(); } 06.10.2011
  • Но все равно такое же поведение. Диалог никогда не появляется. 06.10.2011
  • отклонить всплеск в onPostExecute(), а не в onPreExecute 06.10.2011
  • ДОХ! Поместите отклонение в PRE, а не в POST .. кажется, это сделало это .. теперь, чтобы выяснить, почему настройка различных вещей во вторичном потоке вызвала другие проблемы ... спасибо 06.10.2011
  • Новые материалы

    Деревья классификации и регрессии
    Это мой второй пост об алгоритмах машинного обучения. Мой первый пост посвящен искусственным нейронным сетям, вы можете найти его ниже. Нейронные сети — базовое..

    HMTL - Многозадачное обучение для решения задач НЛП
    Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..