¿Cómo pasar los datos de la segunda actividad a la primera cuando se presiona? Androide
Tengo 2 actividades, Actividad1 y Actividad2 .
En Activity1
tengo un botón y TextView . Cuando se hace clic en el botón Actividad2 se inicia.
- Cómo actualizar la interfaz de usuario de actividad de BroadCastReceiver
- Cómo iniciar la actividad con FLAG_REORDER_TO_FRONT y FLAG_CLEAR_TOP
- Cierre una actividad pasando de derecha a izquierda con una animación suave para ir a la segunda actividad
- Reaccionar androide nativo: Cómo guardar el estado en la rotación o la orientación de la pantalla
- ¿Cómo inhabilito el cambio de orientación en Android?
En Activity2
tengo un EditText .
Quiero mostrar los datos recuperados de EditText en Activity2 en TextView en Activity1 cuando se presiona de nuevo de Activity2 .
¿Puede alguien ayudarme con el código para hacer este trabajo?
- Use el pan tostado dentro del fragmento
- Pase entre actividades
- Deslizar entre las actividades de android
- Android, ¿Cómo poner un ArrayList <myObject> en un intento?
- Comportamiento extraño del cambio de orientación de la actividad en android
- ¿Cómo pasar un objeto a otra actividad?
- El código de resultado es siempre 0 como resultado de la intención de desinstalación en android
- Segunda instancia de actividad después del cambio de orientación
Inicie Actividad2 con startActivityForResult
y utilice el método setResult
para enviar datos de Actividad2 a Actividad1. En Activity1 necesitará anular onActivityResult
para actualizar TextView
con datos EditText
de Activity2.
Por ejemplo:
En Actividad1 , inicie Actividad2 como:
Intent i = new Intent(this, Activity2.class); startActivityForResult(i, 1);
En Actividad2 , utilice setResult
para devolver datos:
Intent intent = new Intent(); intent.putExtra("editTextValue", "value_here") setResult(RESULT_OK, intent); finish();
Y en Activity1 , recibe datos con onActivityResult
:
public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) { if(resultCode == RESULT_OK) { String strEditText = data.getStringExtra("editTextValue"); } } }
Si puede, también use SharedPreferences para compartir datos entre Actividades.
En la actividad 2 ,
@Override public void onBackPressed() { String data = mEditText.getText(); Intent intent = new Intent(); intent.putExtra("MyData", data); setResult(resultcode, intent); }
En la Actividad 1 ,
onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if(resultCode == RESULT_OK) { String myStr=data.getStringExtra("MyData"); mTextView.setText(myStr); } } }
Otras respuestas no funcionaban cuando puse setResult
en onBackPressed
. Comentar la llamada a super onBackPressed
y llamar finish
manualmente resuelve el problema:
@Override public void onBackPressed() { //super.onBackPressed(); Intent i = new Intent(); i.putExtra(EXTRA_NON_DOWNLOADED_PAGES, notDownloaded); setResult(RESULT_OK, i); finish(); }
Y en la primera actividad:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == QUEUE_MSG) { if (resultCode == RESULT_OK) { Serializable tmp = data.getSerializableExtra(MainActivity.EXTRA_NON_DOWNLOADED_PAGES); if (tmp != null) serializable = tmp; } } }
Tome esto como una alternativa a startActivityforResult.But tener en cuenta que para estos casos este enfoque puede ser costoso en términos de rendimiento, pero en algunos casos es posible que tenga que utilizar.
En la actividad 2,
@Override public void onBackPressed() { String data = mEditText.getText(); SharedPreferences sp = getSharedPreferences("LoginInfos", 0); Editor editor = sp.edit(); editor.putString("email",data); editor.commit(); }
En la Actividad 1,
@Override public void onResume() { SharedPreferences sp = getSharedPreferences("LoginInfos", 0); String dataFromOtherAct= sp.getString("email", "no email"); }
Lee esto:
- Devuelve el resultado a onActivityResult ()
- Obtención de resultados de una actividad llamada – Tutorial de Android para principiantes
Estos artículos le ayudarán a entender cómo pasar datos entre dos actividades en Android.
TL; DR Utilizar Activity.startActivityForResult
Respuesta larga:
Debería empezar leyendo la documentación para desarrolladores de Android. En concreto, el tema de su pregunta se trata en la sección Starting Activities and Getting Results
de la documentación de Activity
.
Como por ejemplo código, el SDK de Android proporciona buenos ejemplos. Además, otras respuestas aquí te dan fragmentos cortos de código de ejemplo para usar.
Sin embargo, si está buscando alternativas, lea esta pregunta . Esta es una buena discusión acerca de cómo usar startActivityForResults
con fragmentos, así como un par de enfoques para pasar datos entre actividades.
Esta es tu primera Actividad1.
public class Activity1 extends Activity{ private int mRequestCode = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, Activity2.class); startActivityForResult(intent, mRequestCode); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == mRequestCode && resultCode == RESULT_OK){ String editTextString = data.getStringExtra("editText"); } } }
Desde aquí está iniciando su Activity2.class utilizando startActivityForResult (mRequestCode, Activity2.class);
Ahora esta es tu segunda Actividad, el nombre es Actividad2
public class Activity2 extends Activity { private EditText mEditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //mEditText = (EditText)findViewById(R.id.edit_text); Intent intent = new Intent(); intent.putExtra("editText", mEditText.getText().toString()); setResult(RESULT_OK, intent); } }
Ahora, cuando termines con tu segunda Actividad, entonces llamas al método setResult (), desde onBackPress () o desde cualquier botón cuando tu Activity2 destruya, entonces tu método de devolución de llamada de Activity1 onActivityResult () llamará desde allí para obtener tus datos de la intención ..
Espero que te ayude … 🙂
Desde su FirstActivity, llame al método SecondActivity usando startActivityForResult ().
Por ejemplo:
Intent i = new Intent(this, SecondActivity.class); startActivityForResult(i, 1);
En SecondActivity, establezca los datos que desea volver a FirstActivity. Si no desea regresar, no establezca ninguno.
Por ejemplo: En secondActivity si desea enviar datos:
Intent returnIntent = new Intent(); returnIntent.putExtra("result",result); setResult(Activity.RESULT_OK,returnIntent); finish();
Si no desea devolver datos:
Intent returnIntent = new Intent(); setResult(Activity.RESULT_CANCELED, returnIntent); finish();
Ahora en su clase FirstActivity escriba el siguiente código para el método onActivityResult ().
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if(resultCode == Activity.RESULT_OK){ String result=data.getStringExtra("result"); } if (resultCode == Activity.RESULT_CANCELED) { //Write your code if there's no result } } }
- Cómo ocultar Soft Keyboard cuando se inicia la actividad
- ¿Hay una solución real para depurar aplicaciones cordova