2013-08-07 3 views
1

Я хочу изменить макет при завершении потока, но я не понимаю ошибку; например:Изменение макета при завершении нити

Рез/макет:

-mainView.xml

-threadView.xml

MainActivity.java

protected void firstThread() { 

    setContentView(R.layout.threadView);   

    firstThread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      SystemClock.sleep(7000); 

      setContentView(R.layout.threadView);   
     }   
    }); 
    firstThread.start();   
} 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    firstThread(); 
} 

Спасибо за все !!

+0

Возможный дубликат [Android: переключения экранов с новой активностью или просто изменение содержимого) (http://stackoverflow.com/questions/6811989/android-switching-screens-with-new-activity-or-just-changing -content-view) –

+0

Я думаю, вы запутались в потоках и пользовательском интерфейсе, в Android есть только один файл MainThread/UIThread. и вы не можете устанавливать представления для BackgroundThread. –

+0

Спасибо Andro Selva !! –

ответ

3

Вы не можете изменить нити пользовательского интерфейса из любой другой темы. Вы можете отправить сообщение из другого потока и написать обработчик в потоке пользовательского интерфейса, чтобы изменить макет. Попробуйте использовать Asynctask. ваша жизнь будет проще.

0

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

 runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       setContentView(R.layout.threadView); 
      } 
     }); 
Смежные вопросы