2012-10-20 47 views
0

我正在用android程序在這裏我有兩個類PlaceMapActivity和AddItemizedOverlay我想發送一個字符串從PlaceMapActivity到AddItemizedOverlay類可以任何一個人幫我解決這個,這裏是我的兩個類不能發送一個字符串到另一個類

AddItemizedOverlay

public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> { 

     private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); 

     private Context context; 
     String reference; 
     private Activity activity; 

     String p_u_name; 
     String username; 
     public AddItemizedOverlay(Drawable defaultMarker) { 
      super(boundCenterBottom(defaultMarker)); 
     } 

     public AddItemizedOverlay(Drawable defaultMarker, Context context) { 
      this(defaultMarker); 
      this.context = context; 
     } 



     @Override 
     public boolean onTouchEvent(MotionEvent event, MapView mapView) 
     { 
       if (event.getAction() == 1) { 
       GeoPoint geopoint = mapView.getProjection().fromPixels(
        (int) event.getX(), 
        (int) event.getY()); 
       // latitude 
       double lat = geopoint.getLatitudeE6()/1E6; 
       // longitude 
       double lon = geopoint.getLongitudeE6()/1E6; 
       //Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show(); 
      } 
      return false; 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return mapOverlays.get(i); 
     } 
     @Override 
     public int size() { 
      return mapOverlays.size(); 
     } 

     @Override 
     protected boolean onTap(int index) { 
     OverlayItem item = mapOverlays.get(index); 
     AlertDialog.Builder dialog = new AlertDialog.Builder(this.context); 
     dialog.setTitle(item.getTitle()); 
     dialog.setMessage("Do you want ot park here ?"); 
     reference = item.getSnippet(); 
     dialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 


       SharedPreferences prefs = context.getSharedPreferences("myprefs", 0); 
       SharedPreferences.Editor editor =prefs.edit(); 
       editor.putString("KEY_REFERENCE", reference); 
       editor.commit();     

       Intent intent = new Intent(context, SinglePlaceActivity.class); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity(intent); 
      } 
     }) 
      .setNegativeButton("No",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, just close 
        // the dialog box and do nothing 
        dialog.cancel(); 
//     MainActivity.this.finish(); 
       } 
      }); 
     dialog.show(); 
     return true; 
     } 

     public void addOverlay(OverlayItem overlay) { 
      mapOverlays.add(overlay); 
     } 

     public void populateNow(){ 
      this.populate(); 
     } 

    } 

和第二類是這裏

PlacesMapActivity.java

public class PlacesMapActivity extends MapActivity { 
    // Nearest places 
    PlacesList nearPlaces; 

    // Map view 
    MapView mapView; 

    // Map overlay items 
    List<Overlay> mapOverlays; 

    AddItemizedOverlay itemizedOverlay; 

    GeoPoint geoPoint; 
    // Map controllers 
    MapController mc; 

    double latitude; 
    double longitude; 
    OverlayItem overlayitem,wma; 

    String p_u_name; 
    Place reference; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map_places); 

     // Getting intent data 
     Intent i = getIntent(); 

     p_u_name = i.getExtras().getString("KEY_USERNAME"); 

//  AddItemizedOverlay its_obj = new AddItemizedOverlay(null); 
//  its_obj.getstring(p_u_name); 

     System.out.println("place map activity :got username"+p_u_name); 

     reference = (Place) i.getSerializableExtra("place_reference"); 

     // Users current geo location 
     String user_latitude = i.getStringExtra("user_latitude"); 
     String user_longitude = i.getStringExtra("user_longitude"); 

     System.out.println("sarath"+user_latitude + user_longitude); 

     // Nearplaces list 
     nearPlaces = (PlacesList) i.getSerializableExtra("near_places"); 

     mapView = (MapView) findViewById(R.id.mapView); 
     mapView.setBuiltInZoomControls(true); 

     mapOverlays = mapView.getOverlays(); 

     // Geopoint to place on map 
     geoPoint = new GeoPoint((int) (Double.parseDouble(user_latitude) * 1E6),(int) (Double.parseDouble(user_longitude) * 1E6)); 

     // Drawable marker icon 
     Drawable drawable_user = this.getResources().getDrawable(R.drawable.mark_red); 

     itemizedOverlay = new AddItemizedOverlay(drawable_user, this); 

     // Map overlay item 
     overlayitem = new OverlayItem(geoPoint, "Your Location","That is you!"); 

     itemizedOverlay.addOverlay(overlayitem); 

     mapOverlays.add(itemizedOverlay); 
     itemizedOverlay.populateNow(); 

     // Drawable marker icon 
     Drawable drawable = this.getResources().getDrawable(R.drawable.mark_blue); 

     itemizedOverlay = new AddItemizedOverlay(drawable, this); 

     mc = mapView.getController(); 

     // These values are used to get map boundary area 
     // The area where you can see all the markers on screen 
     int minLat = Integer.MAX_VALUE; 
     int minLong = Integer.MAX_VALUE; 
     int maxLat = Integer.MIN_VALUE; 
     int maxLong = Integer.MIN_VALUE; 

     // check for null in case it is null 
     if (nearPlaces.results != null) { 
      // loop through all the places 
      for (Place place : nearPlaces.results) { 

       latitude = place.geometry.location.lat; // latitude 
       longitude = place.geometry.location.lng; // longitude 

       // Geopoint to place on map 
       geoPoint = new GeoPoint((int) (latitude * 1E6), 
         (int) (longitude * 1E6)); 

       // Map overlay item 
       overlayitem = new OverlayItem(geoPoint,place.name,place.reference); 

       itemizedOverlay.addOverlay(overlayitem); 

       // calculating map boundary area 
       minLat = (int) Math.min(geoPoint.getLatitudeE6(), minLat); 
       minLong = (int) Math.min(geoPoint.getLongitudeE6(), minLong); 
       maxLat = (int) Math.max(geoPoint.getLatitudeE6(), maxLat); 
       maxLong = (int) Math.max(geoPoint.getLongitudeE6(), maxLong); 
      } 
      mapOverlays.add(itemizedOverlay); 

      // showing all overlay items 
      itemizedOverlay.populateNow(); 
     } 

     // Adjusting the zoom level so that you can see all the markers on map 
     mapView.getController().zoomToSpan(Math.abs(minLat - maxLat), Math.abs(minLong - maxLong)); 

     // Showing the center of the map 
     mc.animateTo(new GeoPoint((maxLat + minLat)/2, (maxLong + minLong)/2)); 
     mapView.postInvalidate(); 

    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 
} 
+0

創建AddItemizedOverlay類內部類您的活動課程並在您的活動課程中創建您的字符串全球化。那麼你在你的AddItemizedOverlay類中使用它 – Jeetu

+0

AdditemizedOverlay類對所有其他類都是通用的,所以我保持它一樣 –

+0

你從哪裏傳遞了你的AddItemizedOverlay類中的KEY_USERNAME的值 – Akshay

回答

3

Semd創建AddItemizedOverlay類對象時的字符串。

寫在你的活動類

itemizedOverlay = new AddItemizedOverlay(drawable_user, this,StringData); 

寫在你的覆蓋類

private String StringData; 

public AddItemizedOverlay(Drawable defaultMarker, Context context,String StringData) { 
      this(defaultMarker); 
      this.context = context; 
this.StringData=StringData; 
     } 

嘗試這樣....

感謝

+0

我應該在活動類或覆蓋類中應用這些語句 –

+0

添加覆蓋類 –

+0

嘿,我需要從活動類傳遞字符串覆蓋類 –

相關問題