2011-12-15 11 views
34

Tengo 2 actividades: el usuario de la primera actividad hace clic en un botón que inicia la segunda actividad. La 2da Actividad hace todo el trabajo.onCreate no llamado

Lanzo la 2da Actividad de la siguiente manera que está dentro de una Clase interna onClickListener y he intentado llamarla explícitamente con (FirstActivity.this, Simple.Class) pero sucede lo mismo.

Intent test = new Intent(arg0.getContext(),Simple.class); 
    startActivity(test); 

En el emulador, veo mover la pantalla otra vez como su llamando a la segunda actividad, pero lo único que consigue es una pantalla en negro, pero nada se carga desde mi diseño. Miré Logcat y veo algunos mensajes fallidos en el hilo de enlace. Esta es la función onCreate de mi segunda actividad, pero no consigo ningún resultado ya sea de la pantalla o Logcat mostrarme que las funciones del informe fueron llamados:

public void onCreate(Bundle savedState) 
    { 
     Log.d("SimpleActivity","OnCreate Started"); 

     super.onCreate(savedState); 
    setContentView(R.layout.simple); 

     Log.d("SimpleActivity","OnCreate Ended"); 
    } 

Nota: He llamado al constructor base en OnCreate() con super.onCreate (savedState) en mi código anterior.

+0

publique un poco más del código para que podamos ver qué es arg0. Probablemente no deberías estar usando lo que sea que sea. Use YourActivity.this como el contexto para pasar a una nueva intención. – FoamyGuy

+0

¿Has resuelto esto? ¿Tienes un fragmento dentro de la vista que está siendo instanciado directamente? –

Respuesta

123

Lo que me pasó fue que estaba reemplazando el onCreate método equivocado. Estaba anulando public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) cuando realmente necesitaba anular protected void onCreate(@Nullable Bundle savedInstanceState). Tal vez esto podría ayudar a alguien!

+13

¡Gracias, eso fue realmente! – mrpeardotnet

+11

3 años todavía cometiendo errores tontos ..: D –

+1

Este error estúpido me tomó al menos una hora para encontrar ... ¡Maldita sea, 'public void onCreate'! –

0

debe @Override onCreate y añadir super.onCreate() en ella

@Override 
public void onCreate(Bundle savedState) 
{ 
    super.onCreate(savedState); 

    Log.d("SimpleActivity","OnCreate Started"); 
    setContentView(R.layout.simple); 
    Log.d("SimpleActivity","OnCreate Ended"); 
} 
+5

En el ejemplo del código, dice dos veces "super.onCreate (savedState);" ahora .. –

0

Es necesario llamar al método super.onCreate(savedState). Eche un vistazo al Activity doc.

public void onCreate(Bundle savedState) 
    { 
    super.onCreate(savedState); 
    } 
1

Es posible que no quede onCreate llama, si la actividad nunca ha sido destruida, si por alguna razón una actividad cuelga alrededor, la próxima vez su instancia no se vuelve a crear, pero reanudó su lugar ...

Al menos eso es lo que estoy tratando ahora en mi código ... El ciclo de vida de las actividades parece una buena explicación lógica. Sin embargo, el 99% de las veces sí confío en que se llame aCreate cuando se inicia la actividad y no me falla ....

Edit: Y por supuesto es porque no estaba llamando a finish() al salir de la acti vity. Doh.

+0

Esta respuesta me da una pista para solucionar mi problema. En mi caso, Activity termina en una condición de un indicador de objeto y este se coloca en el código ejecutable del controlador. Pero este objeto se vuelve nulo antes de ejecutar el ejecutable. Gracias por eso. – jrhamza

0

Esto no está relacionado con este tema determinado, pero también esto puede suceder cuando la actividad no se ha declarado en el archivo de manifiesto)

0

tener cuidado de que si su método pertenece a AppCompatActivity o Actividad.

Depende de lo que ha implementado en su clase

Si desea agregar métodos de ciclo de vida o cualquier anulación, te recomiendo que pulsar CTRL+O o hacer Code > Override methods y allí se puede ver que el método pertenece

Screenshot for illustrative purposes - Android Studio's "Methods to Override" dialog

Cuestiones relacionadas