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 :

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>
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
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);
			//	
			}
		});	
	}
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
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();
			}
		});
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
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é");
 
 
		   }
 
    	}
    }
 
    }
Voilà, en espérant que mon poste ne soit pas trop indigeste et qu'une ame charitable entendra mon appel à l'aide.