2012-04-23 2 views
1

Я пытаюсь обновить TextView с интервалом в пять секунд после нажатия кнопки, но когда приложение будет запущено, TextView отобразит только последние значения цикла что в настоящее время работает вОбновление TextView при задержке после нажатия кнопки

Вот что я пытаюсь:.

private Runnable textUpdate = new Runnable() { 
    public void run() { 
     textOutput = (TextView)findViewById(R.id.textOutput); 

     textOutput.setText("Reading Number " + (rIndex+1) + "\n"); 
     textOutput.append(sensorTime[rIndex] + "\n"); 
     textOutput.append("Value: " + rPoint.getValue() + "\n"); 
    } 
}; 

...

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mHandler = new Handler(); 

    TextView textOutput = (TextView) findViewById(R.id.textOutput); 
    textOutput.setText("Simulation output:\n"); 

    Button button03 = (Button) findViewById(R.id.button03); 
    button03.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      for(int i = 0; i < index; i++) { 
       rIndex = i; 
       rPoint = dp[i]; 

       mHandler.postDelayed(textUpdate, 5000); 
      } 
     } 
    }); 

} 

не могу понять, почему только последнее значение информации, которую я пытаюсь т вывода отображается в TextView.

Любая помощь приветствуется.

ответ

2

Проблема, которую я вижу на вашей последней строке кода:

mHandler.postDelayed(textUpdate, 5000); 

Вы отправляете все ваши обновления в 5000 миллисекунд, каждая из которых начинается миллисекунд друг от друга (так же быстро, как телефон может петли).

Попробуйте вместо этого:

mHandler.postDelayed(textUpdate, i * 5000); 
+0

Ах! Одна вещь решена. Теперь я вижу, что он отправляет его каждые пять секунд, но что-то еще в моем коде должно быть ошибочным, потому что он обновляется только с последним значением несколько раз. – dcruz

+0

Выяснил, что мне нужно изменить. Спасибо! – dcruz

0

вы можете сделать сам работоспособный пост снова.

private Runnable textUpdate = new Runnable() { 
    public void run() { 
     textOutput = (TextView)findViewById(R.id.textOutput); 

     textOutput.setText("Reading Number " + (rIndex+1) + "\n"); 
     textOutput.append(sensorTime[rIndex] + "\n"); 
     textOutput.append("Value: " + rPoint.getValue() + "\n"); 

     mHandler.postDelayed(this, 5000); 
    } 
}; 

затем удалить все сообщения в OnPause

+1

Это никогда не закончится. – JustinDanielson

+0

Вот почему вы должны удалить runnable в 'onPause' или так (' mHandler.removeCallbacks (textUpdate); ') – zapl

 Смежные вопросы

  • Нет связанных вопросов^_^