首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onKeyDown的问题

onKeyDown的问题
EN

Stack Overflow用户
提问于 2011-03-14 20:56:26
回答 2查看 1.4K关注 0票数 0

我在这里的目标是希望这个Activity能够在用户导航地图时四处移动并显示土司,但只要他点击中心键,它就应该返回用户触摸的最后一个值。

由于某些原因,它无法工作,当我将onKeyDown放入if循环中时,它会给出错误。我怎么才能让它工作?

代码语言:javascript
复制
    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;

        }
    }


}
EN

回答 2

Stack Overflow用户

发布于 2011-03-14 21:05:13

您的活动需要实现OnKeyListener,然后您可以重写onKeyDown()。

票数 1
EN

Stack Overflow用户

发布于 2011-03-14 21:06:52

您将onKeyDown放在mapOverlay类中,而不是Activity中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5298846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档