android get - Obtenir la vue racine de l'activité en cours




current activity (7)

Juste incase Quelqu'un a besoin d'un moyen plus facile:

Le code suivant donne une vue de l'ensemble de l'activité:

View v1 = getWindow().getDecorView().getRootView();

Pour obtenir une vue certian dans l'activité, par exemple un imageView dans l'activité, ajoutez simplement l'identifiant de la vue que vous voulez obtenir:

View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);

J'espère que cela aide quelqu'un

Je sais comment obtenir la vue racine avec View.getRootView() . Je suis également en mesure d'obtenir la vue à partir de l'événement onClick d'un bouton où l'argument est une View . Mais comment puis-je avoir la vue dans une activity ?


C'est ce que j'utilise pour obtenir la vue racine telle qu'elle est trouvée dans le fichier XML assigné avec setContentView :

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

pour avoir une vue de l'activité en cours

dans tout onClick, nous obtiendrons "View View", en utilisant "view" obtenir le rootView.

Voir vue = view.getRootView ();

et pour obtenir View in fragment

Voir vue = FragmentClass.getView ();


Si vous avez besoin d'une vue racine de votre activité (pour y ajouter votre contenu), utilisez

findViewById(android.R.id.content)

En outre, il a été signalé que sur certains appareils, vous devez utiliser

getWindow().getDecorView().findViewById(android.R.id.content)

au lieu.

Veuillez noter que, comme Booger l'a signalé, il se peut que ce soit derrière la barre de navigation (avec le bouton de retour, etc.) sur certains appareils (mais cela ne semble pas être le cas sur la plupart des appareils).

Si vous avez besoin d'une vue que vous avez ajoutée à votre activité à l'aide de la méthode setContentView() , alors, comme l'a écrit pottedmeat, vous pouvez utiliser

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

Mais mieux vaut simplement définir id à cette vue dans votre mise en page XML et utiliser cet ID à la place.


Obtenez la vue racine de l'activité en cours.

Dans notre activité, nous pouvons obtenir la vue root avec:

ViewGroup rootView = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

ou

View rootView = getWindow().getDecorView().getRootView();

Si vous êtes dans une activité, supposons qu'il n'y a qu'une seule vue racine, vous pouvez l'obtenir comme ceci.

ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
        .findViewById(android.R.id.content)).getChildAt(0);

vous pouvez ensuite le lancer dans votre vraie classe

ou vous pourriez utiliser

getWindow().getDecorView();

notez que cela inclura la vue de la barre d'action, votre vue est en dessous de la vue de la barre d'actions


Votre classe devrait implémenter Serializable ou Parcelable.

public class MY_CLASS implements Serializable

Une fois cela fait, vous pouvez envoyer un objet sur putExtra

intent.putExtra("KEY", MY_CLASS_instance);

startActivity(intent);

Pour obtenir des extras, il suffit de faire

Intent intent = getIntent();
MY_CLASS class = (MY_CLASS) intent.getExtras().getSerializable("KEY");

Si votre classe implémente l'utilisation Parcelable suivante

MY_CLASS class = (MY_CLASS) intent.getExtras().getParcelable("KEY");

J'espère que ça aide: D





android android-activity view