Android 布尔方法的返回值问题
我有此功能,可以在录制标记时显示AlertDialog:Android 布尔方法的返回值问题,android,android-alertdialog,Android,Android Alertdialog,我有此功能,可以在录制标记时显示AlertDialog: protected boolean onTap(int index) { db = openHelper.getWritableDatabase(); AlertDialog.Builder dialog = new AlertDialog.Builder(Geo.this); String[] columns_descri = new String[] {COL_DESCRI}; Cursor
protected boolean onTap(int index) {
db = openHelper.getWritableDatabase();
AlertDialog.Builder dialog = new AlertDialog.Builder(Geo.this);
String[] columns_descri = new String[] {COL_DESCRI};
Cursor cur = db.query(true, TABLE_COORD, columns_descri,null, null, null, null, null, null);
if (cur.moveToPosition(index-1)) {
String description = cur.getString(cur.getColumnIndexOrThrow(COL_DESCRI));
dialog.setTitle("Info.");
dialog.setMessage(description);
dialog.show();
}
db.close();
return true; }
此方法用于检索地图上的任何点击触摸:
@Override
public boolean onTouchEvent(MotionEvent event, MapView maMap)
{
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = maMap.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
return true;
}
问题是当onTouchEvent
返回TRUE时,我无法控制地图、移动地图,或在标记上录制时显示AlertDialog。如果为false,我将重新控制地图,但土司会显示很多次(5或6次)。
这个奇怪问题的根源是什么?试试这个
@Override
public boolean onTouchEvent(MotionEvent event, MapView maMap)
{
//---when user lifts his finger---
boolean result = false;
if (event.getAction() == 1) {
GeoPoint p = maMap.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
result true;
}
//return (result | super.onTouchEvent(event, mapView));
return result;
}
试试这个
@Override
public boolean onTouchEvent(MotionEvent event, MapView maMap)
{
//---when user lifts his finger---
boolean result = false;
if (event.getAction() == 1) {
GeoPoint p = maMap.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
result true;
}
//return (result | super.onTouchEvent(event, mapView));
return result;
}
onTap和onTouch事件的布尔值表示操作是否已完全处理。如果您返回true,操作系统将停止级联到其他视图(因此您将失去对映射的控制)。当您返回false时,操作系统将查找可以处理触摸事件的其他方法。onTap和onTouch事件的布尔值表示操作是否已完全处理。如果您返回true,操作系统将停止级联到其他视图(因此您将失去对映射的控制)。当您返回false时,操作系统将寻找可以处理触摸事件的其他方法。在每个触摸事件上调用OnTouchEvent。 按下、拖动(许多事件)、释放。 因此,你的祝酒辞显示了很多。 仅在if子句中返回true,否则返回false。
这应该可以解决问题。每次触摸事件都会调用OnTouchEvent。 按下、拖动(许多事件)、释放。 因此,你的祝酒辞显示了很多。 仅在if子句中返回true,否则返回false。
这应该可以解决问题。我测试了这段代码,我可以控制地图,但当我点击一个标记时,它不会显示AlertDialog。你的意思是结果为真还是返回为真?:\(当然返回)我测试了这段代码,我可以控制地图,但当我点击一个标记时,它不会显示AlertDialog。你是说结果为真还是返回为真?:\(当然返回)我成功了,但我无法让标记器的水龙头工作。但至少我有地图的控制权。我制作了它,但我无法让标记的水龙头工作。但至少我能控制地图。谢谢你的回答。有没有解决问题的办法?这两个都在同一个地图视图上?您能否将
ontochevent()
上的代码改为onKeyUp()
?我还没有测试过这是否有效,但我认为点击地图只会触发两次,这听起来像你想做的。谢谢你的回答。有没有解决问题的办法?这两个都在同一个地图视图上?您能否将ontochevent()
上的代码改为onKeyUp()
?我还没有测试过这是否有效,但我认为点击地图只会触发两次,这听起来像是你想要做的。