Problème : modifier Visibilité d'un custom component depuis Activité enfante.
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:
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:
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:
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:
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.