我有一个系统,为我选择的每个菜单选项在我的位图上放置一个小点。但是我只希望一次在我的位图上出现一个点,所以当我点击第二个选项时,会出现另一个点。我有一个clearPoint方法,用于清除位图上的点,我怎么能实现它,所以当我按下一个新的按钮选项时,新的点被绘制,但前一个被删除而不是所有点被删除。
这是我的菜单选项
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.A:
fmob.mZoomView.setPoint(list.get(0).getLocationY(), list.get(0).getLocationX());
Toast.makeText(getBaseContext(), "Location A", Toast.LENGTH_SHORT).show();
return true;
case R.id.B:
Toast.makeText(getBaseContext(), "Selected Location B", Toast.LENGTH_SHORT).show();
fmob.mZoomView.setPoint(list.get(1).getLocationY(), list.get(1).getLocationX());
return true;
default:
return false;
}
}
这是我的clearPoint方法
public void clearPoints() {
points.clear();
routepoints.clear();
invalidate();
}
答案 0 :(得分:0)
如果您已经有一个事件监听器,那么您应该首先使用预制方法创建一个方法>清除位图,第二个>添加新点,第三个>显示更新的位图。它必须按此顺序完成,否则可能会发生语义错误。我的方法结构如下:
public void newPoint(int x, int y) /*throws InvalidPointException*/{
clearPoints();
//clear the points on the bitmap
updateBitmapDisplay();
//update the bitmap with the new points
addPoint(x, y);
//add the point to the bitmap
updateBitmapDisplay();
//update the bitmap with new points
}
然后,您必须使用自上而下的编程来使用可用的内容来制作这些方法。但是,我并不完全完全理解你的问题,所以这对你没有用。对不起,如果事实证明是这样,你需要不同的东西。