2017-07-19 48 views
0

我有一个postDelayed Runnable,它从3开始倒计时执行一些代码x次。我正在通过setText()向用户显示文本。 setText()函数在if,else if,else的某些区域中工作,但在其他区域中不起作用。Android TextView.setText有时只能在Runnable里面工作

final Runnable r1 = new Runnable() { 
     @Override 
     public void run() { 
      if ((--count != 0) && (gestureCounter != selectedItems.size())) { 
       mHandler.postDelayed(this, 1000); 
       liveView.setText("Do " + selectedItems.get(gestureCounter) + " in " + String.valueOf(count));//works 
      } 
      else if(gestureCounter != selectedItems.size()){ 
       count=4;//3 seconds + 1 
       liveView.setText("Hold " + selectedItems.get(gestureCounter));//NOT WORKING 
       mHandler.post(this); 
       fcalc.setTrain(true); 
       while(fcalc.getTrain()){ 
        //wait till trainig is done 
       } 
       gestureCounter++; 
      } 
      else{ 
       liveView.setText("");//works 
       fcalc.Train(); 
       fcalc.setClassify(true); 
      } 
     } 
    }; 
    mHandler.post(r1); 

请看看我的意见,看看哪些setText()函数工作或没有。如果其他人是唯一不工作的人。

任何想法?

谢谢你的帮助!

+0

您是否尝试过调试,找出你的是可运行时的setText()不会被调用执行,甚至? –

+0

当你说“不工作”时,你是什么意思?另外,“else if”有'mHandler.post(this)',它不会延迟而不是延迟一秒的mHandler.postDelayed(this,1000)'。那是你想要做的吗? – Cheticamp

回答

0

这是因为你正在调用mHandler.post(this);这将立即调用处理程序runnable,并且你正在增加值gestureCounter,所以下一次会进入这个循环,并且它会根据条件进入第一个循环或第三个循环

尝试在这个循环也增加延迟时间并

编辑:

因为while循环连续运行,用户界面没有更新,只是评论说,并运行代码象下面这样的条件,将工作罚款

这样

    else if(gestureCounter != selectedItems.size()){ 
        liveView.setText("Hold " + 
          selectedItems.get(gestureCounter));//NOT WORKING 

        mHandler.postDelayed(this, 1000); // delay added 

        if(fcalc.getTrain()) { 
         return; 
        } 
        count=4;//3 seconds + 1 

//     fcalc.setTrain(true); 
//     while(fcalc.getTrain()){ 
//      //wait till trainig is done 
//     } 
        gestureCounter++; 
       } 
+0

感谢您的帮助。不幸的是,这没有改变。延迟不等。 – user3697344

+0

我可以知道你的计数值,gestureCounter和selectedItems.size()在开始..? –

+0

count = 4,gesturecounter = 0,selectedItems.size()= 3。谢谢 – user3697344

相关问题