2011-08-04 5 views
2

두 클래스가 있으며 터치시 (지리 포인트) 변수를 하나씩 전달하여 사용자 간의 현재 거리를 계산할 수 있도록합니다. 위치 및 지리적 포인트. 짧은Java에서 다른 클래스의 변수에 액세스하려고하면 null이 됨

긴 이야기 :

나의 첫 번째 클래스는 세션 및 두 번째 계산라는 - 그들은 같은 패키지에 있습니다.

주 클래스에서 변수를 public으로 선언합니다. 터치하면 사용자의 현재 위치가 사용자 위치 (공개) 지오 포인트 변수에 저장됩니다.

그런 다음 두 번째 클래스에 나는 세션의 인스턴스를 생성
Session pass = new Session(); 

를 사용합니다. ... 내가 여기서 무엇을 놓치고

Geopoint position = pass.userposition; 

그러나 반환 유지 널 내가 메인 클래스에 변수를 테스트하는 경우에도 예외가 발생하고 좋은 작품 ?? : 그 후에 나는 userposition 변수를 검색하려고

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; 
} 

그리고 나는 널 포인터 예외가

세션의 주요 코드입니다.

내가 알아 차 렸던 것은 (나는 자바를 잘 설명하지 못해서 설명하려고 노력할 것이다.) 메인 클래스 Session에서 정수와 같은 변수를 전달할 수 있다는 것이다. 그 점은 지리적 포인트를 전달하는 것입니다. 세션 내에서 제스처 감지 onDoubleTap 메소드로 변수를 전달해야합니다. pass.onDoubleTap.userposition과 같은 것이 필요한 변수이고 그 클래스에서 변수 null가 아닙니다. 그러나 나는 그것을하는 것에 대해 어떻게 가느냐?

+0

주요 방법은 정적입니까? 변수가 정적 일 수 있습니까? 코드를 게시 할 수 있습니까? – SnowyTracks

+0

은 사용자 위치가 정적 변수입니까? 인스턴스 변수 인 경우 getter/setter를 사용하여 값을 설정하거나 가져옵니다. 또한 코드를 게시 할 수 있습니까? – sap

+0

그게 작동하지 않는 것 같습니다 .... 어떻게 든 변수는 문에 숨겨져 있고 실제 값은 다른 클래스에 숨겨져 있습니다 ... – user878813

답변

5

변수 static을 선언하여 해결 했으므로 패키지의 모든 클래스에서 공유 할 수 있습니다.

관련 문제