Partage
  • Partager sur Facebook
  • Partager sur Twitter

setFocusable(true) et boutons invisibles

    21 juin 2017 à 21:36:49

    Bonjour, 

    En utilisant la fonction setFocusable(true) depuis une popup en utilisant le clavier (avec un EditText ), les bouttons depuis le layout ne redeviennent plus visible correctement ( avec setVisibility(View.VISIBLE) ), en revenant sur celui ci.

    J'ai beau réutiliser setFocusable avec l'identifiant du layout principale, rien n'y fait, les boutons ne réaparaissent pas.

    Avez vous une idée de ce qui peut se passer ?

    Merci si vous pouvez m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2017 à 8:41:15

      Je ne suis pas sûr de comprendre le lien entre les méthode setFocusable et setVisibility. Aurais-tu du code et des captures d'écran à montrer ?

      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2017 à 16:48:23

        Ok :

        Voici le code appelé depuis une class menu :

         public void save(){
        
        
                LayoutInflater inflater = (LayoutInflater) GAME.main.getBaseContext().getSystemService(GAME.main.LAYOUT_INFLATER_SERVICE);
                final View customView = inflater.inflate(R.layout.save, null);
        
                final PopupWindow popup = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                popup.showAtLocation(GAME.main.findViewById(R.id.main), Gravity.CENTER, 0, 0);
        
                Button save = (Button) customView.findViewById(R.id.save);
                final EditText editText = (EditText)customView.findViewById(R.id.save_text) ;
        
                popup.setFocusable(true);
                popup.update();
        
                save.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
              
        
                        popup.dismiss();
                    }
                });
        
            }

        Ensuite, lorsque je souhaite réutiliser les boutons du layout principale, ceux ci fonctionnent mais ne sont plus visibles :

           public synchronized void setMainMenu(final boolean active ){
                if (active) {
                    (findViewById(R.id.main)).setFocusable(true);
                    //setContentView(R.layout.main);
                    (findViewById(R.id.play)).setVisibility(View.VISIBLE);
                    (findViewById(R.id.load)).setVisibility(View.VISIBLE);
                } else {
                    (findViewById(R.id.play)).setVisibility(View.INVISIBLE);
                    (findViewById(R.id.load)).setVisibility(View.INVISIBLE);
                }
            }
        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2017 à 18:12:39

          Est-ce possible de poster également des captures d'écran avant la pop-up, pendant la pop-up et après la pop-up ?

          Quand est-ce que ta méthode setMainMenu est appelée ? A quoi correspond la variable active ?

          -
          Edité par rolandl 22 juin 2017 à 18:13:39

          • Partager sur Facebook
          • Partager sur Twitter
            22 juin 2017 à 18:51:25

            Je peux faire des screenshoots mais ce n'est sans doute pas nécessaire : c'est simple, j'ai un seul layout dans lequel j'utilise une glSurfaceView qui affiche un fond ou le jeu et/ou des boutons dans le layout en xml pour le menu principale (qui permet de lancer le jeu ou de charger une partie.

            Quand je lance le jeu, je rend invisible les boutons de ce layout puis quand je veux retourner au menu principale, je fini le jeu et remet les boutons visibles.
            C'est pour cela que j'ai crée une seule fonction avec une boolean comme attribut pour dire si on revient sur le menu principale ou si on le quite ( d'où "active" ).

            Ca marche sauf quand, durant le jeu, j'ai utilisé cette fameuses popup avec la fonction setFocusable(true), pour avoir accès au clavier et sauvegarder la partie avec le nom que je veux.

            J'ai essayé de lancer dans le UI threadh, j'ai essayer de refocuser avec l'id du layout principale, rien n'y fait.
            Si en revanche, a ce moment là je fais un restart ou relance le jeu, les boutons apparaissent normalement.

            • Partager sur Facebook
            • Partager sur Twitter

            setFocusable(true) et boutons invisibles

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown