0 votos

Hola,

estoy haciendo mi primer programa android, hasta ahora tengo una actividad principal con tres imagebuttons, uno de ellos llama a una activity tipo fragment programada para que se vea listado/detalle, como el ejemplo que colocaron ustedes. Los otros dos botones llaman a una actividad con una pantalla que dice BAJO CONSTRUCCION, los dos llaman a la misma actividad. Las llamadas son como muestro:

public void Click_ListadeCompras (View view) {
Intent intent = new Intent(this, Activity_listacompras_principal.class);
startActivity(intent);
}

public void Click_LibrodeCocina (View view) {
Intent intent = new Intent(this, ActivityBajoConstruccion.class);
startActivity(intent);
}

public void Click_Programa (View view) {
Intent intent = new Intent(this, ActivityBajoConstruccion.class);
startActivity(intent);
}

El problema es que cuando presiono el botón programa funciona bien, pero cuando presiono Libro de cocina o Lista de Compras la aplicación se muere, y no entiendo porqué pues programa y libro de cocina llaman a la misma actividad. He probado llamar varias veces programa y funciona bien, pero apenas llamo cualquiera de las otras dos me falla.

Gracias por la ayuda que puedan darme.

Pilar

preguntado por Pilar Fernández Dic 22, 2014 en Android

1 Respuesta

0 votos
Mejor respuesta

Hola Pilar,

huele a que falta por declarar la Activity en el AndroidManifest.xml (echa un vistazo en http://jarroba.com/activity-entender-y-usar-una-actividad/)

respondido por Jarroba [Admin] Dic 22, 2014

Ramón:

si las he declarado, no sé si haya cometido algún error al hacerlo, este es mi manifest:

<activity
android:name=”.MainActivity”
android:label=”@string/app_name” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity
android:name=”.Activity_listacompras_Principal”
android:label=”@string/titulo_lista” >
</activity>
<activity
android:name=”.Activity_listacompras_detalle”
android:label=”@string/titulo_detalle_entrada” >
</activity>
<activity
android:name=”.ActivityBajoConstruccion”
android:label=”@string/title_activity_activity_bajo_construccion” >
</activity>

aparte, como te comentaba, dos de los botones llaman a la misma actividad, uno funciona y el otro no, en verdad es extraño.
 

Estoy a punto de borar todo y escribirlo de nuevo, a veces eso ayuda.

Aunque la solución de resetear funciona en el mundo informático y es muy rápido de hacer; a la hora de aprender a programar no la recomiendo, ya que si ocurre este error otra vez ¿Podrías solucionarlo la segunda vez o volverías a empezar? Es mejor jugar con el error un poco ;)

El AndroidManifest.xml está correctamente configurado.

He reparado en que estás utilizando la palabra “this” para obtener el Context, cuando declaras los Intent dentro de los eventos (dentro de un evento estás en otra clase, no en Activity, por lo que no tiene porqué tener Context). Sustituye “this” por getApplicationContext(), para que quede así:

Intent intent = new Intent(getApplicationContext(), ActivityBajoConstruccion.class);

Si te sigue sin funcionar, por favor cópiame el error del Logcat (cuando de el error en el logcat aparecerá un montón de texto rojo, éste es el error).

Hola, Ramón:

Lamentablemente borré lo anterior sin recibir tu respuesta :(

entiendo tu punto, lo que pasa es que la aplicación la programé quizá un poco desordenada, estaba viendo lo de fragments y empecé a programar siguiendo la explicación del artículo para entenderlo mejor pero sin ir probando, entonces tenía demasiadas cosas hechas y sin probar. Comencé de cero y ahora va mejor, aunque no he terminado lo que he hecho hasta ahora funciona, pero el error que me estás comentando lo sigo haciendo (usar this dentro del evento), voy a corregirlo porque independientemente de que funcione sospecho que puede traerme problemas en el futuro, y me gusta segir las mejores prácticas. Muchas gracias pro tu paciencia.

Pilar

Hola, Ramón:

tengo otro problema que coloco aquí porque pensé que la solución ya me la habías dado y resulta que no me funciona.

Cree mi Lista/Detalle usando lo que genera Eclipse cuando le pides que cree un nuevo Activity de este tipo. Me genera, por supuesto, la clase ItemListFragment, donde se maneja el fragmento que contiene mi lista, la cual yo quiero llenar con datos de mi DB, y aquí comienza mi problema:

el constructor de la clase DBHelper recibe como parámetro el contexto, pero esto no es un Activity así que no puedo usar this, quise usar getApplicationContext() y me dice que no existe, cuando traté de investigar en Google me encontré con que esa función solo existe dentro de las actividades, así que no puedo llamarla, pensé en pasarla por parámetros a la clase ItemListFragment usando un constructor que reciba de parámetro el contexto pero no hay una llamada explicita o una construcción explicita de este objeto en ItemListActivity, sino que esta “implementa” ItemListFragment, y me atoré en este punto. Pensé que podría llenar mi adaptador en la actividad y no en el objeto fragmento pero no estoy segura si esto sea buena idea.

Saludos,
Pilar

Dices que no es una Activity, ¿estás trabajando con Fragments? Echa un vistazo a este artículo sobre el Context: http://jarroba.com/context-de-android/

Si, estoy trabajando con Fragments, para iniciar generé la activity Lista/Detalle con Eclipse, como recomiendan ustedes al final de la explicación de Fragments. Voy a leer el artículo a ver si encuentro luz al final del camino jeje