Android 布尔方法的返回值问题

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

我有此功能,可以在录制标记时显示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 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()
?我还没有测试过这是否有效,但我认为点击地图只会触发两次,这听起来像是你想要做的。