he escrito algunas aplicaciones de Android, y siempre han declarado a partir Activity
como:Aplicación Android vs Actividad
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Sería muy bueno para la determinación del alcance algunos métodos, la estática, de preferencias globales compartidos, etc si podría iniciar mi aplicación usando un Application
que luego llama al primer después de configurar prefs, etc., pero no he podido encontrar ningún ejemplo de este patrón de diseño ... cuando pruebo esto en el código, obtengo a ClassCastException
:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// do stuff (prefs, etc)
// start the initial Activity
Intent i = new Intent(this, InitialActivity.class);
startActivity(i);
}
}
InitialActivity.class
es de hecho un Activity
que funciona bien si configuro que sea MAIN
, pero intentar iniciarlo desde MyApplication
que se declara MAIN
genera el error. Probablemente sea una pregunta muy tonta, pero ¿estoy abordando todo mal?
Gracias,
Paul
¿Quiere decir que estás definiendo MyApplication como una actividad? Eso, de hecho, causaría una ClassCastException. Afortunadamente, Android ya hace por ti lo que quieres hacer, si entiendo correctamente lo que quieres hacer. Solo necesita establecer el nombre de su aplicación en esa ruta y el nombre de MyApplication. Se creará antes de sus Actividades, y estará disponible para todas ellas. De esta manera:
Interesante: ¿cómo accedería a los métodos personalizados de la aplicación desde una de las actividades? –
Desde dentro de su Actividad puede obtener un manejador de la Aplicación de la siguiente manera: getApplicationContext(), el resultado del cual, si está configurado como arriba en su manifiesto, se convertirá en MyApplication. –