Activité Android en tant que dialog

J’ai une activité nommée whereActity qui a aussi des dialogs enfants. Maintenant, je veux afficher cette activité comme une boîte de dialog pour une autre activité.

Comment puis je faire ça?

entrer la description de l'image ici

Pour démarrer une activité en tant que dialog, je l’ai définie comme ceci dans AndroidManifest.xml :

  

Utilisez cette propriété dans votre tag d’ activity pour éviter que votre boîte de dialog n’apparaisse dans la liste des applications récemment utilisées

 android:excludeFromRecents="true" 

Si vous souhaitez que votre boîte de dialog / activité ne soit pas détruite lorsque l’utilisateur clique en dehors de la boîte de dialog:

Après setContentView() dans votre Activity utilisez:

this.setFinishOnTouchOutside(false);

Maintenant, lorsque j’appelle startActivity() il s’affiche comme une boîte de dialog, l’activité précédente étant affichée lorsque l’utilisateur appuie sur le bouton Précédent.

Notez que si vous utilisez ActionBarActivity (ou AppCompat theme), vous devrez plutôt utiliser @style/Theme.AppCompat.Dialog .

Utilisez ce code pour que l’activité de la boîte de dialog ne soit pas fermée lorsque l’utilisateur touche en dehors de la boîte de dialog:

 this.setFinishOnTouchOutside(false); 

nécessite le niveau API 11

Vous pouvez définir ce style dans values ​​/ styles.xml pour exécuter un Splash plus ancien:

   

Et l’utiliser AndroidManifest.xml:

   

1 – Vous pouvez utiliser la même activité à la fois pour le dialog et le plein écran, de manière dynamic:

Appelez setTheme(android.R.style.Theme_Dialog) avant d’appeler setContentView(...) et super.oncreate() dans votre activité.

2 – Si vous ne prévoyez pas de modifier le style de thème d’activité, vous pouvez utiliser

  

(comme mentionné par @faisal khan)

Si votre activité est affichée sous la forme d’une boîte de dialog, ajoutez simplement un bouton au fichier xml de votre activité.

  

Joignez ensuite un écouteur de clic dans le code Java de votre activité. Dans l’écouteur, appelez simplement finish()

 Button close_button = (Button) findViewById(R.id.close_button); close_button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); 

Cela devrait écarter votre boîte de dialog, vous ramenant à l’activité appelante.

Si vous avez besoin de la version Appcompat

style.xml

    

yourmanifest.xml

    

Si vous souhaitez supprimer un en-tête d’activité et fournir une vue personnalisée pour la boîte de dialog, ajoutez ce qui suit au bloc d’activité de votre manifeste.

 android:theme="@style/Base.Theme.AppCompat.Dialog" 

et concevez votre activity_layout avec la vue souhaitée

Définissez le thème dans votre fichier manifeste Android.

  

Et définissez l’état de la boîte de dialog au toucher pour terminer.

 this.setFinishOnTouchOutside(false);