¿Cómo transferir datos de una actividad a otra?

Estoy intentando transferir datos de una página a otra pero un cierto problema está viniendo abajo es el código. Estoy intentando transferir el valor de la variable usando el paquete de la primera actividad a la segunda pero algo es incorrecto por favor dígame cuál va mal.

Abajo es la primera actividad: –

package route.planning; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class login extends Activity { /** Called when the activity is first created. */ Context mCtx; final static int START =0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mCtx = this; Button btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener(){ // @Override public void onClick(View v) { String fromLat = new String(); String fromLong = new String(); String toLat = new String(); String toLong = new String(); fromLat=String.valueOf(R.id.FromLatitude); fromLong=String.valueOf(R.id.FromLongitude); toLat=String.valueOf(R.id.ToLatitude); toLong=String.valueOf(R.id.ToLongitude); Intent intent = new Intent(mCtx, MapRouteActivity.class); /*Sending some arguments*/ Bundle bundle = new Bundle(); bundle.putString("fromLat",fromLat ); bundle.putString("fromLong",fromLong ); bundle.putString("toLat",toLat ); bundle.putString("toLong",toLong ); intent.putExtras(bundle); /*Start Activity*/ mCtx.startActivity(intent); /*Start ActivityForResult*/ ((Activity)mCtx).startActivityForResult(intent, 2); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(requestCode == START) { Toast.makeText(mCtx, Integer.toString(resultCode), Toast.LENGTH_SHORT).show(); } } @Override public void onDestroy(){ super.onDestroy(); finish(); } } 

A continuación es parte de la segunda actividad en la que estoy tratando de obtener el valor de arriba

 import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import org.ci.geo.route.Road; import org.ci.geo.route.RoadProvider; import route.planning.R; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.os.Bundle; import android.os.Handler; import android.widget.LinearLayout; import android.widget.TextView; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; public class MapRouteActivity extends MapActivity { LinearLayout linearLayout; MapView mapView; private Road mRoad; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.routeplanning); mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); Bundle extras = this.getIntent().getExtras(); final String fLat=extras.getString("fromLat"); final String fLong=extras.getString("fromLong"); final String tLat=extras.getString("toLat"); final String tLong=extras.getString("toLong"); new Thread() { @Override public void run() { double fromLat=Double.parseDouble(fLat); double fromLon=Double.parseDouble(fLong); double toLat=Double.parseDouble(tLat); double toLon=Double.parseDouble(tLong); //double fromLat = 28.6353, fromLon = 77.2250, toLat = 30.7313, toLon = 76.7754; /***url contains the path to fetch the kml file from the internet*/ String url = RoadProvider .getUrl(fromLat, fromLon, toLat, toLon); InputStream is = getConnection(url); mRoad = RoadProvider.getRoute(is); mHandler.sendEmptyMessage(0); } }.start(); } 

  fromLat=String.valueOf(R.id.FromLatitude); fromLong=String.valueOf(R.id.FromLongitude); toLat=String.valueOf(R.id.ToLatitude); toLong=String.valueOf(R.id.ToLongitude); 

Aquí está el problema. No se leen datos reales de la actividad, sino que se obtiene la representación de cadena de identificadores de controles.

Es necesario obtener las entradas de usuario si R.id.FromLatitude y así sucesivamente son identificadores de EditText:

 fromLat = ((EditText)findViewById(R.id.FromLatitude)).getText().toString(); 

No obtendrá los valores del código siguiente que ha utilizado:

  fromLat=String.valueOf(R.id.FromLatitude); fromLong=String.valueOf(R.id.FromLongitude); toLat=String.valueOf(R.id.ToLatitude); toLong=String.valueOf(R.id.ToLongitude); 

De esta forma, tienes acceso a los ID de estas vistas, que estarán en int. Usted tiene que obtener la instancia de las vistas ( EditText , aquí), entonces tiene que extraer su valor.

Ir con la solución @ Vladimir, es perfecto.

Quitar palabra clave final de Second activity:

 final String fLat=extras.getString("fromLat"); final String fLong=extras.getString("fromLong"); final String tLat=extras.getString("toLat"); final String tLong=extras.getString("toLong"); 

a

 String fLat=extras.getString("fromLat"); String fLong=extras.getString("fromLong"); String tLat=extras.getString("toLat"); String tLong=extras.getString("toLong"); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.