내 애플리케이션에서 선택한 긴 클릭 포인트의 좌표를 사용하고 옵션 집합을 표시하는 MapView의 상황에 맞는 메뉴를 구현해야합니다. 상황에 맞는 메뉴의 MapActivity를 등록한 다음 oncreatecontextmenu 메서드를 재정의하려고 시도했지만 longclick 이벤트가 발생하지 않는 것 같습니다. (예 : DDL에 표시되지 않는 oncreatecontextmenu 메소드에 일부 로그를 입력하십시오.)MapView 또는 다른 솔루션의 상황에 맞는 메뉴
웹 및 Android 설명서에서 검색했지만 만족스럽지 않습니다. MapView에서 컨텍스트 메뉴를 만드는 것이 정말 불가능합니까? 그렇다면 비슷한 것을 구현하는 방법이 있습니까? 다음을 시도 발생하지 않습니다
public class ChoosePosition extends MapActivity {
MapView mappa;
MapController mapCtr;
LocationManager locManager;
LocationListener locLstn;
Location myLastLoc;
String locProvider;
double mylat, mylongi;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chooseposition);
locManager = (LocationManager)getSystemService(LOCATION_SERVICE);
locLstn = new MyLocationListener();
locManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
2000, 10,
locLstn);
mappa = (MapView) findViewById(R.id.map2);
mappa.setLongClickable(true);
mapCtr = mappa.getController();
// attiviamo lo zoom integrato
mappa.setBuiltInZoomControls(true);
// getting last known location
myLastLoc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
GeoPoint point;
if (myLastLoc == null) {
mylat = myLastLoc.getLatitude();
mylongi = myLastLoc.getLongitude();
// trasformiamo l'ultima posizione in un GeoPoint
point= new GeoPoint((int) (myLastLoc.getLatitude() * 1E6),
(int) (myLastLoc.getLongitude() * 1E6));
}
// setting center and zoom
mapCtr.setCenter(point);
mapCtr.setZoom(17);
// adding an overlay
MyLocationOverlay myLocationOverlay = new MyLocationOverlay();
mappa.getOverlays().add(myLocationOverlay);
registerForContextMenu(mappa);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
Log.i("MYINFO", "I'm in");
menu.add(Menu.NONE, 0, Menu.NONE, "First option");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
return true;
}
"onTab"은 "onTap"을 의미합니다.) ok, onTap 대신 onTouchEvent 메서드를 포인터가 움직이는 지 여부를 나타내는 플래그로 재정의했습니다. 그렇지 않다면 ACTION_UP 이벤트가 ACTION_DOWN 이벤트 이후 1 초인 경우 openContextMenu 메서드를 호출했습니다. – breathe0
그래서 고마워요! – breathe0
당신을 환영합니다! 예, 당연히 제가 의미하는 것입니다()! ;) – Flo