Pasar cadenas entre actividades en android

He buscado bastantes sitios pero no he conseguido con cualquier buena solución que trabajó todavía, y realmente necesito ayuda! Estoy haciendo una aplicación que necesita pasar una longitud y una cadena de latitud de una actividad a otra. ¿¿¿Cómo puedo hacer esto??? Eche un vistazo a mi código aquí: El LocationActivity.java necesita pasar la cadena a la otra actividad ya otra que no pegué aquí. Y la cadena que se debe pasar se llama: "latLongString"

LocationActivity.java:

import android.R.string; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class LocationActivity extends Activity { private String Location; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocationManager locManager; locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f, locationListener); Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); updateWithNewLocation(location); if(location != null) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); } } private void updateWithNewLocation(Location location) { TextView myLocationText = (TextView)findViewById(R.id.LocationWord); String latLongString = ""; if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = "Lat:" + lat + "\nLong:" + lng; //This is where i need to pass the string to the other activity } else { latLongString = "No location found"; } myLocationText.setText("Your Current Position is:\n" + latLongString); } private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateWithNewLocation(location); } public void onProviderDisabled(String provider) { updateWithNewLocation(null); } public void onProviderEnabled(String provider) { } public void onStatusChanged(String provider, int status, Bundle extras) { } }; } 

La otra actividad:

 import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.List; import java.util.Locale; import android.R.string; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.os.Bundle; import android.os.Environment; import android.telephony.gsm.SmsMessage; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.location.LocationManager; import android.location.LocationListener; public class FindAndroidActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ Button Nextbutton1, Nextbutton2, Nextbutton3, TestLocationService, EditSettings; TextView Cordinates, Adress, FindAndroid, TextView; EditText LocationWord; private LocationManager locManager; private LocationListener locListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.firsttimescreen); Nextbutton1 = (Button)findViewById(R.id.Nextbutton1); Nextbutton1.setOnClickListener(this); } public void onClick(View src) { switch(src.getId()) { case R.id.Nextbutton1: setContentView(R.layout.setup); Nextbutton2 = (Button)findViewById(R.id.Nextbutton2); TestLocationService = (Button)findViewById(R.id.TestLocationService); TestLocationService.setOnClickListener(this); Nextbutton2.setOnClickListener(this); break; case R.id.Nextbutton2: setContentView(R.layout.setup1); Nextbutton3 = (Button)findViewById(R.id.Nextbutton3); LocationWord = (EditText)findViewById(R.id.LocationWord); LocationWord.requestFocus(View.FOCUS_DOWN); Nextbutton3.setOnClickListener(this); break; case R.id.Nextbutton3: setContentView(R.layout.main); EditSettings = (Button)findViewById(R.id.EditSettings); EditSettings.setOnClickListener(this); break; case R.id.TestLocationService: Bundle extras = getIntent().getExtras(); if(extras !=null) { String value = extras.getString("KEY"); } Cordinates = (TextView)findViewById(R.id.Cordinates); Cordinates.setText(value); //This does not work because the string "value" isn't availible outside the braces, //obviously. How do i make it availible there??? break; case R.id.EditSettings: setContentView(R.layout.setup1); Nextbutton3 = (Button)findViewById(R.id.Nextbutton3); LocationWord = (EditText)findViewById(R.id.LocationWord); LocationWord.requestFocus(View.FOCUS_DOWN); Nextbutton3.setOnClickListener(this); break; } } 

}

En su clase LocationActivity:

 Intent i = new Intent(this, FindAndroidActivity.class); i.putExtra("KEY",YourData); 

En la clase FindAndroidActivity

 Bundle extras = getIntent().getExtras(); if(extras !=null) { String value = extras.getString("KEY"); } 

Par de escenarios:

  1. Si desea pasar la cadena al iniciar la nueva actividad, añádala a la Intención inicial y recuperela en la nueva actividad onCreate .
    Enviar arrays con Intent.putExtra

     // Sending activity String latLong = "test"; Intent i = new Intent(sendingClass.this, receivingClass.class); i.putExtra("latLong", latLong); startActivity(i); // Receiving activity Bundle extras = getIntent().getExtras(); String latLong = extras.getString("latLong"); 
  2. Si desea pasar la cadena cuando regresa de una actividad, utilice startActivityForResult e implemente el evento onActivityResult
    http://micropilot.tistory.com/1577

  3. El tercer escenario, que pasa la cadena entre dos actividades que se ejecutan al mismo tiempo, no es posible porque sólo una actividad puede ejecutarse (estar en primer plano) a la vez.

A veces, los intentos se vuelven demasiado engorrosos y molesto, en su lugar uso un patrón de diseño más fácil (quizás no óptimo): el singleton. Un singleton funciona como una caja de almacenamiento común accesible por código que se encuentra en cualquier lugar de la aplicación, donde los valores se almacenan mientras el ciclo de vida de la aplicación está activo. También puede poner métodos allí. Un singleton es una clase que sólo se puede instanciar una vez, y puede utilizarse como su almacén de una parada para todas las variables que necesita acceder desde cualquier lugar. ¡Usted puede fijar / conseguir cualquier variable en el singleton de cualquier actividad o clase, incluso contexto! Como he dicho quizás hay mejores opciones, pero no tengo tiempo para castigarme con intenciones, punteros nulos y qué no. Crear una nueva clase con el código siguiente, llámelo mySingleton o lo que sea, y empezar a establecer / obtener las variables de todas partes !:

 public class MySingleton extends Application{ private volatile static appSingleton mInstance = null; private String mystring; private appSingleton(){ mystring="hello"; //initialize your var here //Add all the variables you need, here. public static MySingleton getInstance(){ //Singleton's core if(mInstance == null){ mInstance = new MySingleton(); } return mInstance; } //Place Set and Get methods here public String getMystring(){return this.mystring;} public void setMystring(String s){mystring = s;} //Add get/setmethods for your other variables here } //Thats it 

Ahora, vamos a decir que desea configurar mystring a "adiós" en la actividad B, entonces quiero hacer esto:

 MySingleton.getInstance().setMystring("hello"); 

Si quieres acceder a "mystring" de CUALQUIER otra actividad, clase, etc … y mostrarlo en un cuadro de texto haz esto:

 MyTextBox.setText(MySingleton.getInstance().getMystring()); 

Como puede ver, puede escribir valores en cualquier lugar y leer esos valores desde cualquier lugar, con una sola línea de código. ¡Disfrutar!

¿Se supone que su aplicación es multiprocesamiento? Si es así, se abre un todo otro lata de gusanos y el análisis de datos de ida y vuelta se convierte en un juggle bastante interesante.

¿Ha estudiado las funciones de putextra y getextra? Ellos trabajan gran análisis de datos de ida y vuelta entre las actividades. Aunque no creo que funcionen bien con aplicaciones multi-roscadas fuera de la caja.

  • conexión a internet en pausa después de bloqueo de teléfono android
  • Android: recibe notificación cuando el usuario ingresa en una ubicación específica
  • Número GPS de satélites y filtrado de ubicaciones
  • Android: cómo arreglar gps con simulacros (falso) de coordenadas?
  • ¿Cómo afecta la función Doze / Standby a las actualizaciones de ubicación?
  • Android mejor manera de obtener la ubicación repetidamente en el fondo considerando la batería así
  • Android LocationClient.getLastLocation () devuelve la ubicación antigua e inexacta con una nueva marca de tiempo
  • Cómo obtener ubicación mediante AsyncTask
  • Cómo obtener la ubicación GPS de Android
  • ¿Dónde está la ubicación .apk para las aplicaciones que se instalan en sdcard?
  • Obtener el nombre de ubicación actual del usuario sin necesidad de utilizar gps o Internet, sino mediante Network_Provider en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.