如何制作我的位置' != null作为按钮中的条件语句?

时间:2012-04-19 17:18:43

标签: android android-mapview

我想在Button上添加一个onClicklistener;因此,当我按下它时,它会动画到用户位置。但是,如果没有用户位置并且按下该按钮,则由于用户location = null而崩溃。当它不等于null时,如何使它运行?

我试过了 -

private void myLocationButton() {
    MapView mp = (MapView) findViewById(R.id.mapView);
    final MapController mapController = mp.getController();
    final Button myLocationButton = (Button) findViewById(R.id.myLocationButton);
    myLocationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (myLocationButton.isClickable()) {
                mapController.animateTo(myLocationOverlay.getMyLocation());
                mapController.setZoom(17);

            }

        }
    });

}

这是一篇很长的帖子,谢谢你充裕的时间。

2 个答案:

答案 0 :(得分:1)

你做得差不多。但是你必须获得一个新的Location对象,因为在你按下按钮的那一刻它必须是!= null。我也怀疑你刚刚点击了isClickable()检查。

myLocationButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        Location userLocation = myLocationOverlay.getMyLocation();
        if (myLocationButton.isClickable() && userLocation != null) {
            mapController.animateTo(userLocation);
            mapController.setZoom(17);
        }
    }
});

我在这里使用userLocation变量,因为

if (myLocationOverlay.getMyLocation() != null) {
    mapController.animateTo(myLocationOverlay.getMyLocation());
}

仍然可以抛出NullPointerException,因为您在第二次调用getMyLocation时获得了新结果,并且可能再次null。我应该是安全的,因为getMyLocation一旦有了真正的位置,可能永远不会变回null

答案 1 :(得分:0)

试试这个:

@Override
        public void onClick(View v) {
            if (myLocationButton.isClickable() && myLocationOverlay.getMyLocation() != null) {
                mapController.animateTo(myLocationOverlay.getMyLocation());
                mapController.setZoom(17);

            }

        }
    });