2013-04-21 11 views
6

Ich muss eine Instanz der LatLng-Klasse an eine andere Absicht übergeben. Wie soll ich das machen? Hier ist der Code.So senden Sie eine LatLng-Instanz an neue Absicht

LatLng fromPosition = new LatLng(23.4555453556, 11.145315551); 
LatLng toPosition = new LatLng(12.1115145311, 99.333455333); 

Intent i= new Intent(Maps.this, Routes.class); 
     startActivity(i); 

Bitte helfen Sie mir hier.

Routenklasse:

public class Routes extends FragmentActivity { 
GoogleMap mMap; 
GMapV2Direction md; 
private String provider; 
double lati; 
double longi; 
String name; 
Location location; 

Document doc; 
PolylineOptions rectLine; 

Bundle bundle = getIntent().getParcelableExtra("bundle"); 
LatLng fromPosition = bundle.getParcelable("from_position"); 
LatLng toPosition = bundle.getParcelable("to_position"); 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.maps2); 

    md = new GMapV2Direction(); 
    mMap = ((SupportMapFragment)getSupportFragmentManager() 
        .findFragmentById(R.id.map)).getMap(); 

    LatLng coordinates = fromPosition;  
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 16)); 

    mMap.addMarker(new MarkerOptions().position(fromPosition).title("Start")); 
    mMap.addMarker(new MarkerOptions().position(toPosition).title("End")); 

    new ParseXML().execute(); 
} 

private class ParseXML extends AsyncTask<Void, Void, Document> {   
    @Override 
    protected Document doInBackground(Void... params) { 
    doc = md.getDocument(fromPosition, toPosition, 
    GMapV2Direction.MODE_DRIVING); 
    ArrayList<LatLng> directionPoint = md.getDirection(doc); 
    rectLine = new PolylineOptions().width(3).color(Color.RED); 

    for (int i = 0; i < directionPoint.size(); i++) { 
     rectLine.add(directionPoint.get(i)); 
    } 
    return null;  
    } 

    @Override 
    protected void onPostExecute(Document result) { 
      // TODO Auto-generated method stub 
     mMap.addPolyline(rectLine);  
    } 
} 
} 

Das ist mein Weg Klasse. Ich kenne das Problem nicht. Hilf mir hier draußen. Es scheint, das Bündel gut zu senden, aber es gibt einen Fehler beim Empfangen.

Antwort

18

die putParcelable Methode angebracht LatLng-Objekt zu einem Bundle verwenden:

Bundle args = new Bundle(); 
args.putParcelable("from_position", fromPosition); 
args.putParcelable("to_position", toPosition); 

Nun hängen Sie es an Ihre Absicht:

i.putExtra("bundle", args); 

Um es in Ihrer neuen Tätigkeit zu erhalten:

Bundle bundle = getIntent().getParcelableExtra("bundle"); 
LatLng fromPosition = bundle.getParcelable("from_position"); 
LatLng toPosition = bundle.getParcelable("to_position"); 
+1

'fromPosition' und' toPosition' sind nicht 'int' .... sie sind' LatLng'. – Doomsknight

+0

Danke! In Bearbeitung behoben. – wangyif2

+0

Die Methode getArguments() ist für den Typ Routes nicht definiert –

Verwandte Themen