Bon, on s'entend pour dire qu' à Rome, on fait comme les Romains.
Mais bon, je suis tout nouveau dans le monde Java/Android avec un lourd passé de programmation sous Windows, alors forcément je traine avec moi des façons de faire qui ne sont peut-être pas acceptables sous Andoid.
Ce que je voulais faire, c'est les deux boites de dialogues modales de base, l'équivalent d'un "ShowMessage" (la vie est belle, pressez Ok) et d'un ConfirmBox (Ceci va effacer cela, on y va ou on annule?). Et j'ai bien précisé avec un fonctionnement modal.
Je fais un peu de recherche sur Internet et je tombe là-dessus:
http://stackoverflow.com/questions/2...s-up-net-style
Évidemment, je tombe sur le commentaire de Romain Guy. Pas de doute à mes yeux que le gars est plus que crédible (ingénieur/concepteur chez Google, c'est pas rien)
Alors quand il dit que des popup modals, ça se fait pas sous Android, bin j'aurais tendance à suivre son conseil, surtout que c'est un Romain.
Sauf que, dans l'intimité de mon foyer, j'ai écrit (en m'inspirant bien sûr des autres) dans un petit module deux petites classes "DialogMes" et "DialogConfirm". Elles fonctionnent très bien en mode modal et ne semblent pas mettre l'activité principale que les appelle dans tous ses états.
Je dois aussi avouer que je ne vois pas nulle part dans le code quoi que ce soit qui ferait que les popup fonctionne en modal, ce qui est pourtant le cas.
Ce que j'aimerais, c'est que vous me disiez ce qui est inacceptable dans mon code, si on veut respecter les façons de faire sous Android et pourquoi je devrais jeter ça à la poubelle:
Le module de classes générales:
TDialogs.java
L'activité principale (programme test):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 package ca.clubgps.TestDialogs; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Message; class DialogMes { AlertDialog alertDialog ; private static final Message NO_HANDLER = null; public DialogMes(Activity parent,String aTitle, String mes) { alertDialog = new AlertDialog.Builder(parent).create(); alertDialog.setTitle(aTitle); alertDialog.setMessage(mes) ; alertDialog.setButton("OK",NO_HANDLER) ; alertDialog.show() ; } } interface DlgConfirmEvent { public void OnDlgConfirm(boolean yesPressed,int dlgID) ; } class DialogConfirm { DlgConfirmEvent owner ; AlertDialog alertDialog ; public DialogConfirm(DlgConfirmEvent parent,String aTitle, String mes, int id) { owner = parent ; final int ownerID = id ; alertDialog = new AlertDialog.Builder((Activity)parent).create(); alertDialog.setTitle(aTitle); alertDialog.setMessage(mes) ; alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,"Ok",new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { owner.OnDlgConfirm(true,ownerID) ; }}); alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE,"Cancel",new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { owner.OnDlgConfirm(false,ownerID) ; }}); alertDialog.show() ; } }
TestDialogsActivity.java
main.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 package ca.clubgps.TestDialogs; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class TestDialogsActivity extends Activity implements DlgConfirmEvent { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Test dialogue message Button btShowMessage = (Button) findViewById(R.id.btShowMessage); btShowMessage.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { DialogMes dlgMes = new DialogMes( TestDialogsActivity.this,"Message","life is good") ; } }); // Test dialogue confirmation Button btConfirm= (Button) findViewById(R.id.btConfirm); btConfirm.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { DialogConfirm dlgMes = new DialogConfirm(TestDialogsActivity.this,"Confirmation","is it?",1) ; } }); } public void OnDlgConfirm(boolean yesPressed,int dlgID) { String mes ; if (yesPressed) mes = "Ok pressed" ; else mes = "Cancel pressed" ; DialogMes dlgMes = new DialogMes( TestDialogsActivity.this,"RESULT",mes) ; } }
Un gros merci, j'apprécie d'avance l'aide que vous allez m'apporter pour éventuellement devenir l'un des vôtres!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/btShowMessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ShowMessage" /> <Button android:id="@+id/btConfirm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Confirm" /> </LinearLayout>
Partager