Création d'une activité

Conception d'une activité Android

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

Chaque nouvelle activité est créée grâce à la méthode onCreate(). On la présentera plus en détail ci-dessous.

onCreate() dans une activité

Au début de l'article on a evoqué que la méthode onCreate() est la première qui est appelée lors du démarrage d'une nouvelle activité. C'est là où l'on effectue toute l'initialisation des données, l'association du layout à l'écran ainsi que l'ajout des listeners (écouteurs) qui ont pour l'objectif d'effectuer une action à la base du comportement de l'utilisateur.

Regardons maintenant quels aspects se retrouvent le plus souvent dans la méthode onCreate() :

super.onCreate(savedInstanceState);

On appele la méthode onCreate() de la classe Activity. La fonction se charge de créer l'activité.

setContentView(R.layout.activity_contact_form); 

Appelée à la suite du super.onCreate(), cette méthode détermine quel template doit être associé à l'activité.

spinnerChoice = ((Spinner) findViewById(R.id.mailMessageType));

Il s'agit d'un exemple dans lequel on associe un élément du template (une liste déroulante en occurrence) à un champ de la classe spinnerChoice, probablement dans le but de pouvoir l'utiliser plus loin dans le code.

spinnerChoice.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView parent, View view, int pos, long id) {
                isValidSpinnerChoice(null);
            }
            @Override
            public void onNothingSelected(AdapterView parent) {}
        });

Ici également on présente un exemple d'association des écouteurs à un élément du layout. Dans ce cas, on appelera la méthode isValidSpinnerChoice() à chaque fois que l'utilisateur sélectionnera un élément de la liste.

Cursor contactCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

Premier exemple de la catégorie "accès aux données". Il affiche comment récupérer un Cursor pour pouvoir par la suite afficher une liste des contacts.

CustomizationDataSource.getDatabaseInstance();// it opens a connexion if null

Ici on affiche un moyen d'initialiser la connexion à la base de données. La connexion sera toujours fermée dans la méthode onDestroy() de la classe BaseActivity.

Intent intent = getIntent();
String message = getResources().getString(R.string.sms_content);
String messageTemplate = String.format(message, bookTitle, intent.getStringExtra("bookUrl"));  
((TextView) findViewById(R.id.smsText)).setText(messageTemplate);

Ce code montre comment récupérer une valeur provenant de l'activité précédente (intent.getStringExtra()) et de le passer à un élément de la vue. Dans cet exemple, on pré-remplit le texte du SMS par un message contenant l'URL de la page avec le livre.

initialiseTabHost(savedInstanceState); 

C'est la méthode utilisée pour initialiser l'affichage des onglets dans certaines activité (par exemple dans SubscriberFragmentActivity).

Bartosz KONIECZNY Activités

Une question ? Une remarque ?

*

*

Un conseil Symfony1

Comment passer une variable depuis l'action vers le layout ?

Pour ce faire on peut utiliser les slots en appelant dans notre fichier d'action la méthode setSlot() :

$this->getResponse()->setSlot("titre_du_slot", array("12345"));

On le récupère dans le layout par la méthode get_slot() :
get_slot("titre_du_slot") ;