Bonjour. Voilà je suis novice en développement Android, et je rencontre actuellement une difficulté pour modifier la visibilité d'un custom component depuis une activité enfante. Pour faire simple, j'ai une activité dans laquelle sont superposées verticalement plusieurs custom components.
Seul un custom component est affiché, les autres sont en Visible.Gone.
Par défaut le custom component affiché et celui des commandes. Un clic sur les différents controles va provoquer l'affichage du component associé et masquer le custom control commande.
Le problème que je rencontre est que pour une des commandes, j'ai choisi d'ouvrir une nouvelle "fenêtre" qui embarque un mapfragment. Sur cette fenetre figure un bouton "Reduire" censé masquer sur l'activité parente tous les customs component et affiché un custom component mini map. Mon problème est que lorsque je clique sur le bouton l'activité est bien fermé, et tous les composants sur le parent disparaissent comme souhaité. Par contre ma mini map ne s'affiche pas. J'ai mis un log pour voir la valeur de la propriété visibility et celle ci est bien considérée comme Visible.
S'agissant du code, ma view parente qui contient les différents custom component :
L'activité correspondante :
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 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="fill_parent" > <!-- Le layout qui contient l'ensemble des vues --> <LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical"> <com.android.sowiz.MenuUserControl android:gravity="center_vertical|center_horizontal" android:id="@+id/layoutroot" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="visible" /> <com.android.sowiz.ToolMap android:gravity="center_vertical|clip_horizontal" android:id="@+id/mapembedded" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="gone" /> <com.android.sowiz.GestionMessages android:gravity="center_vertical|clip_horizontal" android:id="@+id/messagerie" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="gone" /> <com.android.sowiz.GestionCalendrier android:gravity="center_vertical|clip_horizontal" android:id="@+id/calendrier" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="gone" /> </LinearLayout> </RelativeLayout>
Dans le fenêtre qui s'est ouverte, dans le Oncreate de mon activité :
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 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_myspace); btnAffichageMap=(ImageButton)findViewById(R.id.BtnShowMap); maptool=(RelativeLayout)findViewById(R.id.maptool); commandes=(RelativeLayout)findViewById(R.id.layoutroot); btnAffichageMap.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MySpaceActivity.this,ToolMapActivity.class); startActivityForResult(intent, CODE_RETOUR); // } }); }
Et la méthode qui reçoit le resultat du clic sur le bouton dans l'activité enfante:
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 btnReduireMap=(Button)findViewById(R.id.BtnReduireCarte); btnReduireMap.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.putExtra("Reduction", true); // On retourne le résultat avec l'intent setResult(RESULT_OK, intent); finish(); } });
Voilà, en espérant que mon poste ne soit pas trop indigeste et qu'une ame charitable entendra mon appel à l'aide.
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 protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Vérification du code de retour if(requestCode == CODE_RETOUR) { // Vérifie que le résultat est OK if(resultCode == RESULT_OK) { Boolean visibilitemap = data.getBooleanExtra("Reduction", true); if (visibilitemap) { if (commandes.VISIBLE==View.VISIBLE) commandes.setVisibility(View.GONE); if (messagerie.VISIBLE==View.VISIBLE) messagerie.setVisibility(View.GONE); if (calendrier.VISIBLE==View.VISIBLE) calendrier.setVisibility(View.GONE); if (maptool.VISIBLE==View.GONE | maptool.VISIBLE==View.INVISIBLE) { maptool.setVisibility(View.VISIBLE); } if (maptool.VISIBLE==View.GONE | maptool.VISIBLE==View.INVISIBLE) Log.e("ok", "outil map non visible"); else Log.e("ok", "outil map affiché"); } } } }
Partager