2010-05-29 59 views
0

更新變量我有一個OnTouch和更新包含屏幕座標信息變量下一個setOnTouchListener。問題是它似乎無法更新它們。在第78行,RGB.setText(test);它永遠不會從0.0改變。如果我要將該行及其上面的行移動到onTouch中,它會更新。任何想法是什麼錯誤?謝謝。問題訪問內OnTouch

package com.evankimia.huskybus; 

import com.test.huskybus.R;

進口android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView;

公共類HuskyBus延伸活動{

TextView RGB; 
private CampusMap mCampusMap; 

private float startX = 0; //track x from one ACTION_MOVE to the next 
private float startY = 0; //track y from one ACTION_MOVE to the next 
float scrollByX = 0; //x amount to scroll by 
float scrollByY = 0; //y amount to scroll by 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 


      super.onCreate(savedInstanceState); 



      setContentView(R.layout.main); 

      RGB = (TextView) findViewById(R.id.coordBox); 

      mCampusMap = (CampusMap) findViewById(R.id.map); 
      mCampusMap.setOnTouchListener(new OnTouchListener() { 

            @Override 
            public boolean onTouch(View v, MotionEvent event) { 
              // TODO Auto-generated method stub 



              switch (event.getAction()) { 

        case MotionEvent.ACTION_DOWN: 
          // Remember our initial down event location. 

          startX = event.getRawX(); 
          startY = event.getRawY(); 
          break; 

        case MotionEvent.ACTION_MOVE: 
          float x = event.getRawX(); 

          float y = event.getRawY(); 
          // Calculate move update. This will happen many times 
          // during the course of a single movement gesture. 

          scrollByX = x - startX; //move update x increment 
          scrollByY = y - startY; //move update y increment 

          startX = x; //reset initial values to latest 
          startY = y; 



          mCampusMap.invalidate(); 

          break; 
      }//end switch 
              return false; 
            } 
            ; 

      }); //end onDraw? 

字符串測試= 「」 + scrollByX; RGB.setText(test);

} 

} 

回答

0

,如果你做這種方式它應該工作:

package com.evankimia.huskybus; 

import com.test.huskybus.R; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.TextView; 

public class HuskyBus extends Activity { 
    TextView RGB; 
    private CampusMap mCampusMap; 

    private float startX = 0; // track x from one ACTION_MOVE to the next 
    private float startY = 0; // track y from one ACTION_MOVE to the next 
    float scrollByX = 0; // x amount to scroll by 
    float scrollByY = 0; // y amount to scroll by 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     RGB = (TextView) findViewById(R.id.coordBox); 

     mCampusMap = (CampusMap) findViewById(R.id.map); 
     mCampusMap.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 

       switch (event.getAction()) { 

       case MotionEvent.ACTION_DOWN: 
        // Remember our initial down event location. 

        startX = event.getRawX(); 
        startY = event.getRawY(); 
        break; 

       case MotionEvent.ACTION_MOVE: 
        float x = event.getRawX(); 

        float y = event.getRawY(); 
        // Calculate move update. This will happen many times 
        // during the course of a single movement gesture. 

        scrollByX = x - startX; // move update x increment 
        scrollByY = y - startY; // move update y increment 

        startX = x; // reset initial values to latest 
        startY = y; 

        mCampusMap.invalidate(); 

        break; 
       }// end switch 
       String test = "" + scrollByX; 
       RGB.setText(test); 
       return false; 
      }; 

     }); // end onDraw? 


    } 
} 

的問題是,你有RGB.setText(test);的TouchListener的執行之外。

BTW,嘗試在這裏張貼在計算器上之前組織你的代碼。

+0

謝謝,但我真的很努力做的就是變量scrollByX和scrollByY訪問主類。我有一個通過thisClass.scrollByX引用此類的自定義視圖,但由於某些原因,變量不會在onTouchListener內更新,因此它永遠不會從0更改。 – 2010-05-29 16:51:53