PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Récupérer le nom de la vue
Récupérer le nom de la vue
Débuté par Christian H., 12 fév. 2018 08:43 - 7 réponses
Membre enregistré
36 messages
Posté le 12 février 2018 - 08:43
Bonjour,

Quelqu'un serait'il comment récupérer le nom de la vue ('view') en cours, en java ?
Cela doit ressembler à quelque chose du style "R.layout.Fen"

Merci par avance
Membre enregistré
36 messages
Posté le 14 février 2018 - 08:48
Personne ?
Je dois utiliser la fonction suivante
layoutInflater.inflate(R.layout.fen_test,null);

Je ne sais pas comment récupérer la valeur pour ma fenêtre.
J'ai tenté d'utiliser
layoutInflater.inflate(getView("FEN_test"),null);


Mais la fonction getView retourne un objet de type vue, alors layoutInflater.inflate attend un entier.
Posté le 14 février 2018 - 11:33
Ce que vous voulez récupérer ce n'est pas le nom de la vue mais son identifiant.
Ce n'est pas possible avec une IHM développée avec WM car les vues ne sont pas déclarées dans les ressources de l'application et n'ont donc pas d'identifiant.
Posté le 18 février 2018 - 09:02
Merci pour votre réponse.

J'en étais arrivé au même résonnement :(
Seriez vous si le système en attribut un par défaut ? Peut être est-il possible de lister les différentes fenêtres en java puis de faire une sorte de setId ... ? Mon projet ne comporte qu'une seule fenêtre.
Posté le 19 février 2018 - 11:47
Non le système n'en attribut pas par défaut et même si c'était le cas ca ne résoudrais pas votre problème car la méthode inflate recherche un layout correspondant à une ressource XML :
"Inflate a new view hierarchy from the specified xml resource."
Membre enregistré
155 messages
Posté le 20 février 2018 - 08:45
K, je tente donc cette voie...
J'ai construit mon fichier xml, je l'ai intégré dans l'assistant de compilation, dans le dossier layout.
Il est bien prit en compte, au départ j'ai eu quelques erreurs (en laissant le choix du dossier en automatique dans l'assistant).
Mais lors de l'appel de la ressource en Java ....
layoutInflater.inflate(R.layout.popupwindow,null);
                                           ^
  symbol:   variable popupwindow
  location: class layout


Pourtant mon fichier est bien nommé layout/popupwindow, avec une définition basique :



    android:orientation="vertical" android:layout_width="wrap_content"
    android:background="@color/colorAccent"
    android:layout_height="wrap_content">

            android:text="Floating Windows"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

            android:text="Close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnClose"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true" />


Une idée ?
Message modifié, 20 février 2018 - 08:46
Membre enregistré
155 messages
Posté le 20 février 2018 - 09:27
Après avoir vérifier dans le fichier R.java, WM a nommé la ressource popupwindow_2 ... allez savoir pourquoi. J'ai testé avec d'autre nom, elles sont systématiquement renommées.
Posté le 22 mai 2018 - 11:14
Avec Windev 23 et les conteneurs natifs JAVA

public static void SliderSetVal(int idParent, int val)
{

// idParent est l'ID du conteneur natif WINDEV

// Déclarer un objet view potentiomètre (ce qui a déjà été fait une première fois auparavant pour créer et afficher le potentiomètre)
DiscreteSeekBar mSeekBarX;

// Contexte
Context context = getContexteApplication();

// Récupérer l'objet ViewGroup du conteneur natif java grâce à son ID Windev
ViewGroup parent = (ViewGroup) getActiviteEnCours().findViewById(idParent);

// Récupérer la vue enfant qui est un objet DiscreteSeekBar (Comme il n'y a qu'une View par conteneur on peut mettre 0 (Indice n° 1 des enfants de la Viewgroup appelée parent))
mSeekBarX = (DiscreteSeekBar) parent.getChildAt(0);

// Mise à jour de la valeur
mSeekBarX.setMax(val);

}