Динамическое изменение фона макета - PullRequest
0 голосов
/ 10 апреля 2011

Я хочу изменить фон макета.

Вот лог из LogCat:

04-10 14:59:55.291: WARN/dalvikvm(263): threadid=15: thread exiting with uncaught exception (group=0x4001b188)
04-10 14:59:55.309: ERROR/AndroidRuntime(263): Uncaught handler: thread Thread-8 exiting due to uncaught exception
04-10 14:59:55.331: ERROR/AndroidRuntime(263): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.ViewRoot.checkThread(ViewRoot.java:2683)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.ViewRoot.requestLayout(ViewRoot.java:557)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.View.requestLayout(View.java:7918)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.View.requestLayout(View.java:7918)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.View.requestLayout(View.java:7918)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.View.requestLayout(View.java:7918)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.View.setBackgroundDrawable(View.java:7275)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at android.view.View.setBackgroundResource(View.java:7188)
04-10 14:59:55.331: ERROR/AndroidRuntime(263):     at walk.me.Splasher$1.run(Splasher.java:35)

walk.me.Splasher$1.run(Splasher.java:35) is this line:  

layout.setBackgroundResource(temp); What should I do?

Ответы [ 2 ]

3 голосов
/ 10 апреля 2011

Используйте обработчик или запустите его в потоке пользовательского интерфейса. Обработчик может выполнить эту задачу лучше.

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub

        }
    });
2 голосов
/ 10 апреля 2011

Вы не можете изменить пользовательский интерфейс из фонового потока.Смотрите статью PainlessThreading .Исходя из структуры вашего кода, я настоятельно рекомендую вам использовать AsyncTask , как описано в этой статье.Это позволяет вам запускать фоновый поток, который неоднократно запускает действия в потоке пользовательского интерфейса.Как только вы научитесь использовать класс AsyncTask, такие вещи станут проще, чем передача отдельных объектов Runnable в обработчик.

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