私のアプリケーションでは、選択した長いクリックポイントの座標をとり、オプションのセットを表示するMapView上にコンテキストメニューを実装する必要があります。 コンテキストメニューのMapActivityを登録してからoncreatecontextmenuメソッドをオーバーライドしようとしましたが、longclickイベントが発生しないようです。 (例えば、私はddmsに表示されない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;
}
私はonTapの代わりに、ポインタが動いているかどうかを示すフラグでonTouchEventのメソッドをオーバーライドしました。そうでない場合、イベントACTION_UPがイベントACTION_DOWNの1秒後にあった場合、私はopenContextMenuメソッドを呼び出しました。 – breathe0
だから、ありがとう男! – breathe0
あなたは大歓迎です!はい、もちろん私はタップ()を意味しました! ;) – Flo