Проблема доступа к обновленным переменным в OnTouch - PullRequest
0 голосов
/ 29 мая 2010

У меня есть OnTouch и setOnTouchListener, который обновляет переменные, которые содержат информацию о координатах экрана. Проблема в том, что он, кажется, никогда не обновляет их. В строке 78 RGB.setText (тест); оно никогда не меняется с 0.0. Если бы я переместил эту строку и строку над ней в onTouch, он обновляется. Есть идеи, что не так? Спасибо.

package com.evankimia.huskybus;

import com.test.huskybus.R;

импорт android.app.Activity; импорт android.os.Bundle; import android.view.MotionEvent; импорт 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?

String test = "" + scrollByX; RGB.setText (тест);

    }

 }

1 Ответ

0 голосов
/ 29 мая 2010

Это должно работать, если вы делаете это так:

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.

Кстати, попробуйте организовать ваш код перед публикацией здесь в StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...