2013-03-03 25 views
1

我有一個擴展MapActivity的主類,我打算在子類中創建警報對話框,但是我遇到了Context參數的錯誤。 這裏是我的Java代碼:如何在android的主類的子類中創建一個警告對話框?

公共類主要擴展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(),但我遇到了強制關閉錯誤。

回答

0

您可以使用繼承的getContext()方法從MapView引用中獲得對有效上下文的引用。相關行將然後是:

AlertDialog ad = new AlertDialog.Builder(mapv.getContext()).create();  
相關問題