ajouts retirer par fragmenttransaction (et...

33
Pour compléter l’introduction

Upload: others

Post on 24-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Pour compléter l’introduction

Page 2: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 02 / 29

• Ajouts

• Retirer

• Par FragmentTransaction (et commit)

• Déplacement par tri des View générées

Fragments Menu Intents

Page 3: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 03 / 29

• Il s’agit de déplacer la vue liée au fragment

• Il faut donc le retrouver dans son parent, et le changer d’indice

– Boucle for…

– Car il manque :

private View[] getChilds(ViewGroup v) {

View [] res = null;

if (v != null) {

res = new View[v.getChildCount()];

for(int i = 0; i < res.length; i++) res[i] = v.getChildAt(i);

}

return res;

}

• Pour changer l’indice, c’est la méthode <ViewGroup>.addView( v, i)… mais avant il faut l’enlever

Fragments Menu Intents

Page 4: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 04 / 29

• Caution: ”Your activity will be destroyed and recreated each time the user rotates the screen. When the screen changes orientation, the system destroys and recreates the foreground activity because the screen configuration has changed and your activity might need to load alternative resources (such as the layout).”http://developer.android.com/training/basics/activity-lifecycle/recreating.html

• Re-créer => refaire des objets…• Pour les fragments, on s’en sort car il y a le paramètres (et recréer avec ce même paramètre)• Des fonctions peuvent être appelées avant destruction

– onSaveInstanceState pour une Activité– onSaveInstanceState pour un fragment– on peut y remplir le bundle– Ne pas oublier l’appel à super.xxx

• Méthode pour utiliser ce qui est sauvé– onCreate(Bundle saved) pour un fragment– onRestoreInstanceState(Bundle inState) pour une activité

• A faire évoluer… en même temps que le code…

Fragments Menu Intents

Page 5: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 05 / 29

• Le tri des tâches :

– Comparable de java

– Enum de java

• C.f. cours POO s5…

• Puis gestion de la rotation (re remplir la liste de fragment, à partir de leur onCreate par un appel à leur activité)

Fragments Menu Intents

Page 6: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 06 / 29

• Source de l’image : « androidprogramming, the big nerd ranch guide »

Fragments Menu Intents

Page 7: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 07 / 29

• Appel Méthode setRetainInstance(true) dans onCreate du Fragment

android programming, the big nerd ranch guide

Fragments Menu Intents

Page 8: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 08 / 29

• L’attribut android:name attribute indique la classe qui extends Fragment

• Insertion de la View retournéepar onCreateView()

• Note: chaque fragment nécessiteun id (ou tag) – Meilleur gestion par Android

– android:id attribute (unique)

– android:tag avec une string unique

– Les deux

Une View “fragment”

<fragmentandroid:name=“nom_complet_classe"android:id="@+id/le_id"etc.

" />

Fragments Menu Intents

Page 9: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 09 / 29

• Comme un fragment…

– Un peu particulier (dialog)

– Méthode show, pas de transaction

• Besoin de prévoir la communication (interface logicielle), notamment pour la valeur de retour

Fragments Menu Intents

Page 10: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 10 / 29

• Portion de code– Avec ou sans interface– Réutilisable– Instanciable en cours d’éxécuction : FragmentTransaction (add / commit)

• Création– Méthode statique (fabrique)

• Création d’un Bundle à mettre en paramètre (setArguments)

– onCreate puis onCreateView (chargement du xml et personnalisation de la vue)

• Gestion de la rotation– onSaveInstanceState (sauvegarde de valeur dans un bundle)– onCreate (extraction des éléments sauvegardés dans le bundle)

• Attention, il y a deux bundles : celui en paramètre du onCreate (sauvegarde avant rotation) et getArguments (paramètre lorsde la creation)

• Destruction : FragmentTransaction (remove / commit)• Prévoir les interfaces et liaison pour utilisation

– faire communiquer votre Fragment avec le reste de l’application

Fragments Menu Intents

Page 11: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 11 / 29

Fragments Menu Intents

Page 12: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 12 / 29

• Dossier menu dans res<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<itemandroid:id="@+id/tri_buttoir"android:orderInCategory="100"android:showAsAction="never"

android:title="@string/tri_buttoir"/><item

android:id="@+id/tri_creation"android:orderInCategory="100"android:showAsAction="never"

android:title="@string/tri_creation"/></menu>

Fragments Menu Intents

Page 13: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 13 / 29

• <menu>Defines a Menu, which is a container for menu items. A <menu> element must be the root node for the file and can hold one or more <item> and <group> elements.

• <item>Creates a MenuItem, which represents a single item in a menu. This element may contain a nested<menu> element in order to create a submenu.

• <group>An optional, invisible container for <item> elements. It allows you to categorize menu items so they share properties such as active state and visibility. For more information, see the section about Creating Menu Groups.

• Pour la balise item :• android:id

A resource ID that's unique to the item, which allows the application can recognize the item when the user selects it.

• android:iconA reference to a drawable to use as the item's icon.

• android:titleA reference to a string to use as the item's title.

• android:showAsActionSpecifies when and how this item should appear as an action item in the action bar.

http://developer.android.com/guide/topics/ui/menus.htmlFragments Menu Intents

Page 14: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 14 / 29

• Méthode pour la création dans une Activity@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.nom_du_fichier_xml, menu);return true;

}

Fragments Menu Intents

Page 15: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 15 / 29

• Toujours dans une Activity@Overridepublic boolean onOptionsItemSelected(MenuItem item) {

// Handle item selectionswitch (item.getItemId()) {

case R.id.un_id:// des actions…return true;

case R.id.un_autre_id:// des actions en réponse à cet item làreturn true;

// et ainsi de suitedefault:

return super.onOptionsItemSelected(item);}

}

Fragments Menu Intents

Page 16: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 16 / 29

V1 : pas de menu

V2 : un menu « simple »

V3 : aller dans une activité fille

V4 : utiliser une activité (Intent) prédéfini

Fragments Menu Intents

Page 17: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 17 / 29

• Fisheye, exemple de personnalisation d’une View– Intégration dans le xml

<fisheye.four.image.DeformablePolygons [...] />

– Surcharge de onDraw, utilisation de Paint

• Mise en place d’un menu « simple »– inflate du menu dans

onCreateOptionsMenu– onOptionsItemSelected pour

réagir aux actions– Utilisation de invalidate() sur la

vue pour la mettre à jouir

Fragments Menu Intents

Page 18: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 18 / 29

• Autre écran = autre activité• Attention au cycle de vie (détruit, pas détruit ?)

• Création d’une autre activité• Déclaration dans le manifest (après l’activité principale)<activity

android:name="fisheye.four.SettingsActivity"android:label="@string/title_activity_settings“android:parentActivityName="fisheye.four.Fisheye">

<meta-dataandroid:name="android.support.PARENT_ACTIVITY"android:value="fisheye.four.Fisheye" />

</activity>

Fragments Menu Intents

Page 19: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 19 / 29

• Méthode simple : startActivity(Intent i) dans Activity• Intent

– Objet de communication avec l’OS– Dans ce cas, constructeur new Intent(Context, Class)

• Context = activité qui lance• Class = le type de l’activité à lancer• Exemple : Intent exo = new Intent(this, ExoScolaire.class);où this est l’activité principale et ExoScolaire est aussi une activité

– putExtra pour ajouter des données

• Dans le onCreate de la nouvelle activité– getIntent( ) – getIntent().getIntExtra("clef", val_defaut);

Fragments Menu Intents

Page 20: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 20 / 29

• Lancement avec startActivityForResult• Méthode setResult(code, intent)

– Avec un code de retour– Avec un Intent (et des extra)

• Méthode de retour dans l’activité qui a lancé

protected void onActivityResult(int requestcode, intresultcode, Intent data) {

if (data == null) return ;Date d = (Date) data.getSerializableExtra("date");// etc.

}

Fragments Menu Intents

Page 21: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 21 / 29

android programming, the big nerd ranch guide

APPLI

Extra, etc.

Activité A

Activité B

Extra, etc.

android programming, the big nerd ranch guide

Fragments Menu Intents

Page 22: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 22 / 29

Affichage du bouton (dans la barre)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

getActionBar().setDisplayHomeAsUpEnabled(true);

}

Récupérer l’eventpublic boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case android.R.id.home: // etc. } return true; }

Fragments Menu Intents

Page 23: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 23 / 29

• Appel à setResults– Faire l’Intent de retour (putExtra pour les valeurs de retour)

– Quitter la vue avec finish• Pas dans l’esprit

• Mais l’avantage de conserver l’instance de l’activité…

– Interception du bouton « back » : public void onBackCalled()

• Utilisation du « up »– L’activité de départ repart quasiment de zéro

– Perte du onActivityResult

Fragments Menu Intents

Page 24: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 24 / 29

Activité qui lance// dans le if onOptionsItemSelected

if (item.getItemId() == R.id.reglages) {

startActivityForResult(prefs.obtenirRéglages(this),

CODE_REGLAGES);

}

Activité lancée

Fragments Menu Intents

Page 25: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 24 / 29

Activité qui lance// dans le if onOptionsItemSelected

if (item.getItemId() == R.id.reglages) {

startActivityForResult(prefs.obtenirRéglages(this),

CODE_REGLAGES);

}

Activité lancée

1

L’utilisateur « touche » le menu

Fragments Menu Intents

Page 26: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 24 / 29

Activité qui lance// dans le if onOptionsItemSelected

if (item.getItemId() == R.id.reglages) {

startActivityForResult(prefs.obtenirRéglages(this),

CODE_REGLAGES);

}

Activité lancée

1

L’utilisateur « touche » le menu2

en réponse, l’activité est créée

// création de la nouvelle activité

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_reglages);

// récupération des paramètres dans l’intent

surnom = (EditText) findViewById(R.id.editSurnom);

surnom.setText(getIntent().getStringExtra( Préférences.SURNOM ));

// etc.

}

Fragments Menu Intents

Page 27: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 24 / 29

Activité qui lance// dans le if onOptionsItemSelected

if (item.getItemId() == R.id.reglages) {

startActivityForResult(prefs.obtenirRéglages(this),

CODE_REGLAGES);

}

Activité lancée

1

L’utilisateur « touche » le menu

3

l’utilisateur appuie sur « back »

// appui sur le bouton « back »

@Override

public void onBackPressed() {

Intent i = new Intent();

// création et « remplissage » de l’intent de retour

i.putExtra(Préférences.SURNOM , surnom.getText().toString() );

i.putExtra(Préférences.SERVEUR , serveur.getText().toString());

i.putExtra(Préférences.PORT , port.getText().toString());

// indication du la fin de cette actvité pour celle d’origine

setResult(Activity.RESULT_OK , i);

// puis comportement « habituel » du bouton back

super.onBackPressed();

}

2

en réponse, l’activité est créée

// création de la nouvelle activité

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_reglages);

// récupération des paramètres dans l’intent

surnom = (EditText) findViewById(R.id.editSurnom);

surnom.setText(getIntent().getStringExtra( Préférences.SURNOM ));

// etc.

}

Fragments Menu Intents

Page 28: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 24 / 29

Activité qui lance// dans le if onOptionsItemSelected

if (item.getItemId() == R.id.reglages) {

startActivityForResult(prefs.obtenirRéglages(this),

CODE_REGLAGES);

}

Activité lancée

1

L’utilisateur « touche » le menu

4le résultat est alors transmis à l’activité initiale

@Override

public void onActivityResult(int requestcode, int resultcode,

Intent data) {

if (requestcode == CODE_REGLAGES) {

if (resultcode == Activity.RESULT_OK) {

// traitement de l’intent de retour

boolean correct = prefs.reçoit(data);

if (! correct) {

// etc.

}

}

}

}3

l’utilisateur appuie sur « back »

// appui sur le bouton « back »

@Override

public void onBackPressed() {

Intent i = new Intent();

// création et « remplissage » de l’intent de retour

i.putExtra(Préférences.SURNOM , surnom.getText().toString() );

i.putExtra(Préférences.SERVEUR , serveur.getText().toString());

i.putExtra(Préférences.PORT , port.getText().toString());

// indication du la fin de cette actvité pour celle d’origine

setResult(Activity.RESULT_OK , i);

// puis comportement « habituel » du bouton back

super.onBackPressed();

}

2

en réponse, l’activité est créée

// création de la nouvelle activité

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_reglages);

// récupération des paramètres dans l’intent

surnom = (EditText) findViewById(R.id.editSurnom);

surnom.setText(getIntent().getStringExtra( Préférences.SURNOM ));

// etc.

}

Fragments Menu Intents

Page 29: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 25 / 29

Voir : https://speakerdeck.com/jgilfelt/this-way-up-implementing-effective-navigation-on-android

// pour « relancer » l’activité parent

Intent up = NavUtils.getParentActivityIntent(this);

// éventuellement des valeurs de retours comme extra

up.putExtra(...);

// retour à l’activité, qui repasse par onCreate, mais qui

// n’a pas été tuée (pas de onRestoreInstanceState)

NavUtils.navigateUpTo(this,up);

// s’il n’y a pas de paramètre

// NavUtils.navigateUpFromSameTask(this);

Fragments Menu Intents

Page 30: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 26 / 29

• http://developer.android.com/training/implementing-navigation/ancestral.htmlif (NavUtils.shouldUpRecreateTask(this, up)) {

// This activity is NOT part of this app's task, so create a new task// when navigating up, with a synthesized back stack.TaskStackBuilder.create(this)

// Add all of this activity's parents to the back stack.addNextIntentWithParentStack(up)// Navigate up to the closest parent.startActivities();

} else {// This activity is part of this app's task, so simply// navigate up to the logical parent activity.NavUtils.navigateUpTo(this, up);

}

Fragments Menu Intents

Page 31: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 27 / 29

• Pour « tuer »– « Normalement réserver à l’OS »– finish() (+System.exit(0) )– Etc.

• Pour relancer l’application au début à partir de là où on est :– Dans le manifest, pour L’activité ciblée

android:launchMode="singleTop“– Depuis l’endroit où on veut revenir « au début »Intent intent = new Intent(this, LActivitéPrincipale.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

Fragments Menu Intents

Page 32: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 28 / 29

• Reconnaissance de parole de google

• Intégrée à Android

private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;

/**

* Fire an intent to start the speech recognition activity.

*/

@Override

public void onClick(View v) {

// lancement de l'intent avec le nom de la classe... (constante)

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

// paramètre requis pour interprétation du résultat...

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,

RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

// titre

intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Fisheye - Speech recognition");

// VOICE_RECOGNITION_REQUEST_CODE pour retrouver l'appel pour le résultat

// nombre choisi par le développeur

startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

}

Fragments Menu Intents

Page 33: Ajouts Retirer Par FragmentTransaction (et commit)deptinfo.unice.fr/~renevier/ancien/POO-2017/cours... · Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment,

Philippe Renevier Gonin - L3 Informatique Parcours Miage - POO s6 - Fragment, Menu, Intents 29 / 29

protected void onActivityResult(int requestcode, int resultcode, Intent data) {// test si le retour est ok et si le retours vient bien de le reco vocale

if (requestcode == VOICE_RECOGNITION_REQUEST_CODE && resultcode == RESULT_OK) {

ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

// […]}else {// un autre cas…}

}

Fragments Menu Intents