2016-04-24 80 views
0

我想用不同的字符串每3秒更新一次TextView。我有一个处理程序和runnable设置,但是当我运行它时,它会自动显示最后一个setText。我试图将ms更改为3000,6000等,并且在运行之前也尝试了removeCallbacks。任何帮助将不胜感激!用Handler更新TextVIew只显示最后一次更改

final Handler handler = new Handler(); 

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

    final Runnable r = new Runnable(){ 
     @Override 
     public void run(){ 
      TextView text = (TextView)findViewById(R.id.textView4); 
      text.setText("1"); 
      handler.postDelayed(this, 3000); 
      text.setText("2"); 
      handler.postDelayed(this, 3000); 
      text.setText("3"); 
      handler.postDelayed(this, 3000); 
      text.setText("4"); 
      handler.postDelayed(this, 3000); 
      text.setText("5"); 


     } 
    }; 

    handler.postDelayed(r, 0); 


} 

回答

0

更改您这样的代码

private String[] messages = {"1", "2", "3", "4", "5"}; 
    final Handler handler = new Handler(); 
    private int nextIndex; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.workout); 
     final TextView text = (TextView)findViewById(R.id.textView4); 
     final Runnable r = new Runnable(){ 
      @Override 
      public void run(){ 
       if (messages.length > nextIndex) { 
        text.setText(messages[nextIndex++]); 
        handler.postDelayed(this, 3000); 
       } 
      } 
     }; 

     handler.postDelayed(r, 0); 
    } 
+0

你是一个天才,太感谢你了!完美的作品! – SillyFidget