2013-10-29 27 views
0

我正在製作一個應用程序,當您按住按鈕時,帶有數字的文本視圖會增加(直到您放開)。Ontouch功能

我嘗試過使用OnTouch,但是除非您在按鈕中移動手指,否則不會增加數量。我試圖尋找一些在這裏回答問題的計算器和實施解決方案的建議,但它似乎剛纔崩潰......

的ontouch聽衆:

upb.setOnTouchListener(new View.OnTouchListener(){ 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      /* Button pressed */ 
      if(event.getAction() == MotionEvent.ACTION_DOWN){ 
       startIncreasing(); 
      } 
      if(event.getAction() == MotionEvent.ACTION_UP){ 
       stopIncreasing(); 
      } 
      return true; 
     } 

     private void startIncreasing(){ 
      setIsIncreasing(true); 
      new Thread(new Runnable() { 
       public void run() { 
        while(isIncreasing()){ 
         if(speed<12){ //max speed determined here 
          speed++; 
          speedtext.setText(speed + " km/h"); 
          downb.setEnabled(true); 
          homeb.setEnabled(false); 
          revb.setEnabled(false); 
          //send signal to speed up 
         } 
         else { 
          speedtext.setText("MAX " + speed + " km/h"); 
          upb.setEnabled(false); 
         } 
        } 
       } 
      }).start(); 
     } 
}); 

後來在代碼:

synchronized private void stopIncreasing(){ 
     setIsIncreasing(false); 
    } 

    synchronized private boolean isIncreasing(){ 
     return continueIncreasing; 
    } 

    synchronized void setIsIncreasing(boolean newSetting){ 
     continueIncreasing = newSetting; 
    } 

任何人都可以發現我做錯了什麼?或者我應該以完全不同的方式做到這一點?

謝謝您的幫助

回答

1

沒有看到日誌,我相信你的應用程序崩潰,因爲你從後臺線程更新TextView(在speedtext.setText(speed + " km/h");)。 更新UI元素必須從UI線程(main)完成。 您可以使用runOnUiThread()方法從UI線程進行此類更新。