Показать диалог при загрузке нового экрана - PullRequest
2 голосов
/ 25 февраля 2010

У меня есть передний экран с кнопкой, которая открывает второй экран. Загрузка второго экрана может занять несколько секунд, поэтому я хочу отобразить диалоговое окно во время загрузки. Моя проблема в том, что диалоговое окно не отображается при загрузке второго экрана, но отображается, когда я возвращаюсь на первую страницу со второй страницы. Если я закомментирую startActivity, чтобы открыть вторую страницу, диалоговое окно отображается нормально. Я довольно новичок в программировании Android - думаю, это как-то связано с потоками.

//code snippet from inside onCreate:
NewGame.setOnClickListener(new View.OnClickListener() {
         public void onClick(View arg0) {
//does not get displayed before 2nd page opens 
          showDialog(DIALOG2_KEY); 
//shows fine if next 2 lines commented out
             Intent i = new Intent(screen1.this, SudukuXL.class);
            startActivity(i);

Я имел дело с диалоговым окном, отображаемым при возврате на передний экран с помощью onPause(). Я пытался использовать потоки, чтобы отделить диалог от startActivity, но мне не повезло. Любая помощь будет оценена.

Я использовал код из примеров Android для создания диалога. Я включаю ниже для справки:

protected Dialog onCreateDialog(int id) {
   switch (id) {

       case DIALOG2_KEY: {
           ProgressDialog dialog = new ProgressDialog(this);
           dialog.setMessage("Loading...");
           dialog.setIndeterminate(true);
           dialog.setCancelable(true);
           return dialog;
       }
   }
   return null;
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2010

Я пытался отобразить диалоговое окно до тех пор, пока не заполнится xml, но не совсем понял. Вот один из способов, который я попробовал:

public void onCreate(Bundle icicle)
           {
             super.onCreate(icicle);
             showDialog(DIALOG2_KEY);

             new Thread(new Runnable(){
                    public void run(){
                         setContentView(R.layout.saved); 
                   }
              }).start();
               //   removeDialog(DIALOG2_KEY);

Я пробовал несколько других способов, включая обмен внутренним потоком, порядок выполнения и т. Д. Ни один из способов не работает. Приведенный выше код показывает диалог быстро (отлично), но затем вылетает.

0 голосов
/ 25 февраля 2010

ИМХО, я бы предпочел использовать ViewSwitcher вместо диалога. Но в любом случае я думаю, что вы должны показать диалог (или переключить вид) во «втором экране». Просто позвольте вашему «второму» занятию начаться, а затем покажите диалог в onCreate() во время обработки некоторых вещей, а после окончания просто удалите диалог (или переключите представление). Мой совет - использовать AsyncTask или вот так , чтобы что-то делать в фоновом режиме !!! Также эта тема может помочь вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...