我在这里的目标是希望这个Activity能够在用户导航地图时四处移动并显示土司,但只要他点击中心键,它就应该返回用户触摸的最后一个值。
由于某些原因,它无法工作,当我将onKeyDown放入if循环中时,它会给出错误。我怎么才能让它工作?
public class createNote extends MapActivity {
MapView mapview;
String sLatt;
String sLonn;
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
public void onCreate(Bundle savedInstanceStates){
super.onCreate(savedInstanceStates);
setContentView(R.layout.map);
mapview=(MapView)findViewById(R.id.MapView);
mapview.setBuiltInZoomControls(true);
mapOverlay mapoverlay=new mapOverlay();
List<Overlay>listOfOverlays=mapview.getOverlays();
listOfOverlays.add(mapoverlay);
}
class mapOverlay extends com.google.android.maps.Overlay{
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapview){
GeoPoint p=null;
if (event.getAction()==1){
p=mapview.getProjection().fromPixels((int)event.getX(), (int)event.getY());
Toast.makeText(getBaseContext(),p.getLatitudeE6()/1E6 + "," + p.getLongitudeE6()/1E6, Toast.LENGTH_SHORT).show();
double lat=(double) (p.getLatitudeE6()/1E6);
double lon=(double) (p.getLongitudeE6()/1E6);
String sLat=Double.toString(lat);
String sLon=Double.toString(lon);
sLatt=sLat;
sLonn=sLon;
Toast.makeText(getBaseContext(),sLat + "-" + sLon,Toast.LENGTH_SHORT).show();
//setResult(RESULT_OK, new Intent().setAction(sLat + "," + sLon));
//setResult(RESULT_OK, new Intent().setAction("test"));
//Intent data = new Intent();
//data.putExtra("key1", sLat);
//data.putExtra("key2", sLon);
//setResult(RESULT_OK,data);
//finish();
}
return false;
}
public boolean onKeyDown(int keyCode, KeyEvent event){
super.onKeyDown(keyCode, event, mapview);
if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER){
Intent data = new Intent();
data.putExtra("key1", sLatt);
data.putExtra("key2", sLonn);
setResult(RESULT_OK,data);
finish();
return true;
}
else return false;
}
}
}发布于 2011-03-14 21:05:13
您的活动需要实现OnKeyListener,然后您可以重写onKeyDown()。
发布于 2011-03-14 21:06:52
您将onKeyDown放在mapOverlay类中,而不是Activity中。
https://stackoverflow.com/questions/5298846
复制相似问题