Android-переключатель между двумя холстами - PullRequest
0 голосов
/ 06 июня 2011

Понятия не имею, почему моему приложению не нравится следующее, и буду благодарен за любую помощь.

У меня есть основное действие, которое устанавливает следующее onCreate

setContentView(new Splash(this));

Всплеск является видом поверхности со следующим в его конструкторе

this.setBackgroundDrawable(getResources().getDrawable(R.drawable.splash));

Тогда у меня есть тема в Splash, которая ждет 3 секунды или 3000 миллисекунд.

Затем вызывает второе представление поверхности в основной деятельности

setContentView(new GameCanvas(this));

Все работает нормально, пока не вызовет seoncds setContentView, экран не изменится, он останется на заставке.

есть идеи, почему?

Вот моя ветка

new Thread(){
            public void run(){
                try{
                    Log.e("here", "sleeping");
                    sleep(3000);
                    //main being the main activity class
                    main.killSplash();
                    //Log.e("here", "KILL SPLASH");
                }catch(Exception e){
                    //
                }
            }
        }.start();

p.s у меня такое ощущение, что я вызываю метод switch canvas из потока

1 Ответ

1 голос
/ 06 июня 2011

Действия разработаны так, чтобы они были различными «экранами» в вашем приложении, и поэтому вы должны отделить активность вашего заставки от основной игровой активности.После того, как действие нарисовано, я не верю, что изменение contentView вызовет перерисовку.Я считаю, что вы должны вызывать setContentView только один раз - из метода onCreate.

Также обратите внимание, что каждое действие автоматически запускается в новом потоке.

Кроме того, вы можете захотеть следовать некоторым учебникам по Android Developer .setContentView в первую очередь предназначен для установления макета и содержимого вашей деятельности, обычно определяемой в ресурсе XML, тогда как вы, похоже, рассматриваете его как средство переключения экземпляров представления.

...