2010-06-25 2 views
1

Я новичок в Android. Мне нужно просмотреть один текст на экране. После того, как время сна сна, мне нужно добавить другой текст на экран. Я должен показать добавление текста, но мой код отображается после операции добавления. Как показывать текст по одному?Динамический просмотр текста в Android?

public class dynamictextview extends Activity { 
    /** Called when the activity is first created. */ 
    private TextView tv ; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv = new TextView(this); 
     tv.setText("Dynamic Text View Test\n"); 
     setContentView(tv); 
     for(int i=0;i<10;i++) 
     { 
      tv.setDrawingCacheBackgroundColor(MODE_APPEND); 
      tv.append("\nAttempt "+i); 
      try { 
       Thread.sleep(500); 
      } 
      catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

ответ

0

Прежде всего, вы не должны вызывать Thread.sleep() из потока пользовательского интерфейса.

Затем, чтобы текст добавлялся как ожидалось, вы должны сначала вернуться из метода onCreate(), прежде чем изменять содержимое TextView.

0

Проблема в том, что ваш Thread.sleep(500); фактически создает поток пользовательского интерфейса для сна. Что вы должны сделать, так это то, что вы должны поместить код своего for loop в другой рабочий поток и запустить его в потоке пользовательского интерфейса (runOnUIThread). Я не тестировал его сам, но теоретически подход должен работать.

0

вы можете использовать метод обработчика postDelayed

private TextView mTextView; 
    private Handler handler = new Handler(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mTextView = (TextView) findViewById(R.id.textview); 
     for(int i=0;i<10;i++) 
     { 

      handler.postDelayed(new ViewUpdater("\nAttempt "+i), 1000*i); 

     } 

    } 
    private class ViewUpdater implements Runnable{ 
     private String mString; 

     public ViewUpdater(String string){ 
      mString = string; 
     } 

     @Override 
     public void run() { 
      mTextView.append(mString); 
     } 
    }