How to transfer data from one activity to another?

I am trying to transfer data from one page to another, but some problem below is the code. I am trying to pass the value of a variable using a bundle from the first activity to the second, but something is wrong, please tell me what is going wrong.

below is the first activity: -

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(); } } 

Below is the part of the second action in which I try to get the value from above

 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(); } 
+6
android
source share
3 answers
  fromLat=String.valueOf(R.id.FromLatitude); fromLong=String.valueOf(R.id.FromLongitude); toLat=String.valueOf(R.id.ToLatitude); toLong=String.valueOf(R.id.ToLongitude); 

Here is the problem. You are not reading any actual data from the activity, but get a view of the control identifier strings.

You need to get user inputs if R.id.FromLatitude etc. are EditText identifiers:

 fromLat = ((EditText)findViewById(R.id.FromLatitude)).getText().toString(); 
+5
source share

You will not get values ​​from the following code that you used:

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

Thus, you get access to the identifiers of these views, which will be in int. You should get an instance of the views ( EditText , here), then you need to extract their value.

Go with @Vladimir's solution, its perfect.

+1
source share

Delete the last keyword from the second action:

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

to

 String fLat=extras.getString("fromLat"); String fLong=extras.getString("fromLong"); String tLat=extras.getString("toLat"); String tLong=extras.getString("toLong"); 
+1
source share

All Articles