1

MapActivity を拡張するメイン クラスがあり、サブクラスで警告ダイアログを作成しようとしていますが、Context パラメータのエラーが発生しました。ここに私のJavaコードがあります:

public class main extends MapActivity {

private MapView mapView;
private MapController mapController;
private GeoPoint geopoint;

public class MapOverlay extends Overlay {

    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapv){

        if(event.getAction()==1){
            GeoPoint p = mapv.getProjection().fromPixels(
                    (int) event.getX(), 
                    (int) event.getY());
            Toast.makeText(getBaseContext(), "Location: " + 
                    p.getLatitudeE6()/1E6 + "," +
                    p.getLongitudeE6()/1E6, Toast.LENGTH_LONG).show();
            AlertDialog ad = new AlertDialog.Builder(this).create();    
            ad.setCancelable(false); // This blocks the 'BACK' button  
            ad.setMessage("Hello World");  
            ad.setButton("OK", new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    dialog.dismiss();                      
                }  
            });  
            ad.show(); 
        }
        return false;
    }

}

}

エラーは次のとおりです。

コンストラクタ AlertDialog.Builder(main.MapOverlay) は未定義です!

これを に変更しましたがgetBaseContext()、強制終了エラーが発生しました。

4

1 に答える 1

0

MapView継承 されたgetContext()メソッドを使用して、参照から有効なコンテキストへの参照を取得できます。その場合、関連する行は次のようになります。

AlertDialog ad = new AlertDialog.Builder(mapv.getContext()).create();    
于 2013-03-03T17:37:28.197 に答える