Recrear / reiniciar la actividad de otra actividad
He visto esta pregunta pero no obtuve buenas respuestas y mi situación es un poco diferente. Tengo 2 actividades A y B. De Actividad Activación AI Actividad B pero la actividad A debe permanecer abierta, ahora después de iniciar sesión en Actividad BI guardar algunos datos en Preferencias compartidas y necesito el diseño en la Actividad A para cambiar según los valores de preferencias compartidas , Así que después de la actividad de la entrada A debe reconstruir para aplicar cambios pero todavía debe ser detrás de la actividad B.
Así que mi pregunta es que es posible recrear la Actividad A de la Actividad B ??
- Android - startActivityForResult fuera de una actividad?
- Finaliza la actividad cuando se devuelve una respuesta del servidor, pero espera que termine la animación
- Comportamiento extraño de una actividad en diferentes versiones de Android: el mapa parpadea
- Finalizar la actividad infantil cuando la actividad de los padres se detiene
- La animación al inicio de la actividad omite los marcos
- ¿Cómo manejar el cambio de orientación de pantalla cuando el diálogo de progreso y el hilo de fondo están activos?
- Tener la aplicación ejecutándose sobre otra aplicación
- ¿Cuál es la manera correcta de insertar una actividad en otro proyecto?
- ¿Cómo terminar varias actividades con un clic de botón?
- Consulta de MapActivity para el hospital / restaurante más cercano que no funciona
- Errores de administración del ciclo de vida de UnityPlayer en una aplicación nativa de Android
- Android - ¿Qué está mal con el método onStart?
- ¿Cuándo cambia el * Window focus * en Android?
No sé qué es exactamente lo que quieres decir con "actividad A debe permanecer abierta" aunque así que tendrás que averiguar esa parte o dar una explicación más detallada. ¿Quiere decir actividad B superposiciones Actividad A? Asumiré eso.
Le sugiero que use 3 fragmentos en la Actividad A. Un fragmento para el diseño inicial y otro para el nuevo diseño. Luego otro fragmento en lugar de la Actividad B, lo llamaré FragmentB.
En FragmentB
cree una interfaz interna de Callback.
public interface Callbacks { void onLoggedIn(); }
A continuación, haga que la actividad A implemente esta devolución de llamada
public class ActivityA extends Activity implements FragmentB.Callbacks { //rest of the activity... @Override public void onLoggedIn() { getFragmentManager().beginTransaction() .replace(R.id.container, new SecondFragment()) .commit(); } }
Obviamente puedes elegir cualquier nombre que quieras para ActivityA
, FragmentB
, Callbacks
, onLOggedIn
y SecondFragment
. Donde SecondFragment
es el nombre del fragmento que contiene el diseño después de haber iniciado sesión en FragmentB
.
http://developer.android.com/reference/android/app/Activity.html#StartingActivities
En lugar de ** recrear * tu actividad, deberías usar startActivityForResult
y actualizar tu actividad en onActivityResult
p.ej
public class MyActivity extends Activity { ... static final int PICK_CONTACT_REQUEST = 0; public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { // When the user center presses, let them pick a contact. startActivityForResult( new Intent(Intent.ACTION_PICK, new Uri("content://contacts")), PICK_CONTACT_REQUEST); return true; } return false; } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PICK_CONTACT_REQUEST) { if (resultCode == RESULT_OK) { // A contact was picked. Here we will just display it // to the user. startActivity(new Intent(Intent.ACTION_VIEW, data)); } } } }
Su solución es buscar el valor de las preferencias compartidas y actualizar al diseño en OnResume () método de actividad donde como oncreate () etc .:
@Override public void onResume(){ super.onResume(); // put your code here... to get sharedpreferences }