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