2011-07-08 2 views
2

Я хочу отображать буквы, используя текстовое изображение. и письмо должно отображаться в текстовом виде через некоторый временной интервал.Дисплей charecters в текстовом режиме с задержкой по времени - android

я использовал следующий код ....

String a="Apple"; 
String b=""; 
....... 
....... 


public void run() { 

    for (int i = 0; i < 5; i++) { 
     b=b+""+a.charAt(i); 
     mTextView.setText(b); //Problem here 
     Log.d("Letters",""+b); 
      try { 
        sleep(2000); 
      } catch (InterruptedException e) {} 
    } 

Вход кошка Результат: android.view.ViewRoot $ CalledFromWrongThreadException: только исходный поток, который создал иерархию вида может коснуться его точки зрения.
Любое решение?

ответ

2

Вы не можете изменить интерфейс управления из других потоков. Обновите свой код следующим образом:

public void run() { 

    for (int i = 0; i < 5; i++) { 
     b=b+""+a.charAt(i); 

     //one of the ways to update UI controls from non-UI thread. 
     runOnUiThread(new Runnable() 
     {    
      @Override 
      public void run() 
      { 
       mTextView.setText(b); //no problems here :)     
      } 
     }); 

     Log.d("Letters",""+b); 
      try { 
        sleep(2000); 
      } catch (InterruptedException e) {} 
    } 
} 
+0

спасибо за подробный ответ .. – vnshetty

2

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

использование этого

public void run() { 

     for (int i = 0; i < 5; i++) { 
      b=b+""+a.charAt(i); 

      Log.d("Letters",""+b); 
       try { 
         sleep(2000); 
         handler.post(updateMessgae) 
       } catch (InterruptedException e) {} 
     } 

private final Runnable updateMessgae= new Runnable() 
    { 
     public void run() 
     { 
      try 
      { 
      Log.d("Letters",""+b); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    private final Handler handler = new Handler(); 
Смежные вопросы