2011-12-20 15 views
13

Tengo una actividad A, que inicia la actividad B y la actividad B inicia la actividad C. ¿Hay alguna manera de no mostrar la actividad B. Quiero este comportamiento porque si no hay contenido (por ejemplo, para ListView) para la actividad B, muestre la actividad C en la que selecciono algunos datos, y luego presione el botón Atrás para volver a la actividad B. El punto es que me gustaría tener la actividad B en la pila de actividades, pero no mostrarla en cierta casos.Comenzar la actividad sin mostrarlo

Respuesta

17

he encontrado la solución:

  • Actividad Una actividad comienza con B parámetro adicional (intent.putExtra ("algo", true))
  • actividad B:
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getIntent().hasExtra("something") && getIntent().getBooleanExtra("something", false) { 
      //show activity B 
     setContentView(R.layout.activity_B); 
    } else { 
      //don't show activity B, start activity C 
     startActivityForResult(activity_C, ACTIVITY_NOT_INITIALIZED); //start activity C 
    } 
} 

// cuando volvió de la actividad C, comprobar si la actividad B w como ya se ha inicializado

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == ACTIVITY_NOT_INITIALIZED) { 
     //show activity B 
     setContentView(R.layout.activity_B); 
    } 
} 
1

simplemente llame al startActivity() en onCreate() método de actividad B. No se mostrará, pero estará en la pila de actividades.

+4

Es cierto, pero verá la página en blanco durante medio segundo antes de que comience la actividad C. No quiero esto –

0

Puede llamar a startActivity, sin llamar a setContentView para un diseño. ¡Espero que esto ayude!

+2

Luego, volver a esta actividad será con problemas :) – Jin35

2

no establecen setContentView() para la actividad B

+2

Entonces volver a esta actividad será con problemas :) – Jin35

+2

Es cierto, pero verá la página en blanco durante medio segundo antes de que comience la actividad C. No quiero esto La devolución no es un problema porque puede manejarla en onResume(). –

10

En su conjunto manifiesta

android:theme="@android:style/Theme.NoDisplay" 

para su actividad.

+4

también necesita extender 'Activity' no' AppCompactActivity' – vladimir

+0

Con 'extends Activity' Obtengo esto: java.lang.RuntimeException: no se puede reanudar la actividad {myActivity}: java.lang.IllegalStateException: Activity {myActivity} no lo hizo call finish() antes de que onResume() complete –

Cuestiones relacionadas