마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FragmentActivity에서 버튼 클릭 시 네이버지도 현재위치 시작

0 추천

FragmentActivity에서 버튼을 클릭을 하면 현재위치를 시작하려고 합니다 

그런데 로그캣을 찍어보니 mMyLocationOverlay 쪽이 계속 null로 나오던데 외부 이벤트는 적용이 되지 

않는건가요?? 

 

class Map extends NMapActivity{

private NMapOverlayManager mOverlayManager;

	private NMapMyLocationOverlay mMyLocationOverlay;
	private NMapLocationManager mMapLocationManager;


public void onCreate(Bundle savedInstanceState) {
  // location manager
		mMapLocationManager = new NMapLocationManager(this);
		mMapLocationManager
		.setOnLocationChangeListener(onMyLocationChangeListener);

		// compass manager
		// mMapCompassManager = new NMapCompassManager(this);
		mMyLocationOverlay = mOverlayManager.createMyLocationOverlay(
				mMapLocationManager, null);
}

public void locationFuntion(int arg) { <---- FragmentActivity에서 버튼 클릭시 이벤트 적용
		if (arg == LOCATION_ON) {
			// create my location overlay
			
			startMyLocation();
			Log.d("MainActivity", "on");
			// Toast.makeText(MainActivity.this, "현재위치 시작",
			// Toast.LENGTH_SHORT).show();
			// Toast.makeText(getApplicationContext(), "현재위치 시작",
			// Toast.LENGTH_SHORT).show();
		} else {
			Log.d("MainActivity", "off");
			stopMyLocation();
		}
	}

private void startMyLocation() {
		Log.d("MainActivity", "start location");
		if (mMyLocationOverlay != null) {   <----- mMyLocationOverlay가 계속 null이 됨

			if (!mOverlayManager.hasOverlay(mMyLocationOverlay)) {
				Log.d("startMyLocation", "addOverlay");
				mOverlayManager.addOverlay(mMyLocationOverlay);

			}

			if (mMapLocationManager.isMyLocationEnabled()) {
				Log.d("startMyLocation", "MyLocationEnabled");
				if (!mMapView.isAutoRotateEnabled()) {

					mMyLocationOverlay.setCompassHeadingVisible(false);

					// mMapCompassManager.enableCompass();

					mMapView.setAutoRotateEnabled(false, false);

					mMapContainerView.requestLayout();

				} else {
					Log.d("MainActivity", "start location stop");
					stopMyLocation();
				}

				mMapView.postInvalidate();

			} else {
				Log.d("MainActivity", "start location ss");
				boolean isMyLocationEnabled = mMapLocationManager
						.enableMyLocation(true);
				if (!isMyLocationEnabled) {
					Toast.makeText(
							MainActivity.this,
							"Please enable a My Location source in system settings",
							Toast.LENGTH_LONG).show();

					Intent goToSettings = new Intent(
							Settings.ACTION_LOCATION_SOURCE_SETTINGS);
					startActivity(goToSettings);

					return;
				}
			}

		} else {
			Log.e("MainActivity", "location null");
			
		}
	}

 

안왕초보 (1,390 포인트) 님이 2015년 10월 19일 질문
안왕초보님이 2015년 10월 19일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...