Получение нулевого значения при попытке доступа к переменным из другого класса в Java - PullRequest
3 голосов
/ 04 августа 2011

У меня есть два класса, и я хочу передать (географическую) переменную при касании от одного к другому, чтобы я мог рассчитать расстояние между текущим местоположением пользователя и географической точкой.

Короче говоря:

Мой первый класс называется Session, а второй Calculation - они находятся в одном пакете.

Я объявляю переменные как общедоступные в основном классе.На ощупь я сохраняю текущее местоположение пользователей в (общедоступной) переменной географической точки с именем userposition .

Затем во втором классе я использую

Session pass = new Session();

, чтобысоздать экземпляр сеанса.После чего я пытаюсь получить переменную userposition :

Geopoint position = pass.userposition;

Но она продолжает возвращать ноль и выдает исключение, даже если я проверила переменную в основном классе и прекрасно работает ... Чтоя пропускаю здесь ??

Основной код для Session:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maps);
    // Blah blah blah

    // And here i declare the GestureDetector...I working with google maps.
    Gest = new GestureDetector(new SimpleOnGestureListener());

    mapView.getOverlays().add(new Overlay() {
        @Override
        public boolean onTouchEvent(MotionEvent e, MapView mapView) {
            Gest.onTouchEvent(e);
            return super.onTouchEvent(e, mapView);
        }
    });

    Gest.setOnDoubleTapListener(new OnDoubleTapListener() {

        @Override
        public boolean onDoubleTap(MotionEvent e) {
            // and in here i set the variable which works fine i tested it
            // in a textView
            userposition = myLocationOverlay.getMyLocation();
        }
    });
}

А для моего класса вычислений:

public Overlays(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
}

public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}

@Override
protected OverlayItem createItem(int i) {
    // TODO Auto-generated method stub
    return mOverlays.get(i);
}

@Override
public int size() {
    // TODO Auto-generated method stub
    return mOverlays.size();
}

@Override
public boolean onTap(int index) {
    // and here i try to get the variable by taping a marker on map (its a
    // lot of code no need to post works fine too)

    Session pass = new Session();
    Geopoint position = pass.userposition;
}

И тогда я получаю нулевой указательисключение.

Что я заметил (я не очень хорош в Java, поэтому я попытаюсь объяснить), что я могу передать переменную, например целое число (я попробовал это) из основного класса Session.Дело в том, что для передачи географической точки мне нужно передать переменную в метод onDoubleTap Gesture Detection внутри Session ... что-то вроде pass.onDoubleTap.userposition, потому что это переменная, которая мне нужна, а в этом классе переменнаяне является нулевымНо как мне это сделать ??

1 Ответ

6 голосов
/ 09 августа 2011

Я решил это, объявив переменную static, чтобы ее можно было использовать для всех классов в пакете.

...