2010-05-29 62 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