-1
votes

Boutons dans Android: visible, invisible, parti

Je travaille sur l'application Android et je dois définir des boutons personnalisés.

Initialement, je régle le bouton sur Invisible. P>

Je veux exécuter une méthode particulière et vérifier une valeur de chaîne. . S'il renvoie la valeur NULL, le bouton doit encore être invisible. S'il renvoie une valeur de chaîne, je souhaite appeler le bouton et effectuer une tâche puis. p>

C'est ce que j'ai essayé, mais échoué. p>

Mon application se bloque lorsque la valeur de code renvoie NULL, avec erreur: "Tentative d'invoquer la méthode virtuelle" P>

 public String code = "";
 Button startbtn;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_retrieve_visits);

    startbtn = findViewById(R.id.videobutton);
    startbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //code
        }
    });
//more code here
}

public void parseData(String response)
{
 try {
        JSONObject json = new JSONObject(response);
        JSONArray data = json.getJSONArray("data");
        for (int i = 0; i < data.length(); i++) 
        {
            JSONObject child = data.getJSONObject(i);
            code = child.getString("code");
        }

        if(data.length()==0) ////check for empty array
            startbtn.setVisibility(View.INVISIBLE);

        else
            startbtn.setVisibility(View.VISIBLE);
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}


1 commentaires

Pouvez-vous fournir un code complet?


3 Réponses :


1
votes

Essayez le code ci-dessous

 if (code != null && !code.equels("")
        {
            startbtn.setVisibility(View.VISIBLE);
        }
        else
        {
            startbtn.setVisibility(View.GONE);
        }
        startbtn.setOnClickListener(new View.OnClickListener() {
            //Required action
        }


3 commentaires

Essayé ces. NullCompact: tentative d'invoquer la méthode virtuelle 'void.android.widget.button.setVisibilty (int)' sur une référence objet nulle


Avez-vous défini le bouton avec FOOTVIEWBYID Afficher votre code d'activité complet.


Voir mis à jour et assurez-vous que Videobutton est dans Activity_retrieve_visits.xml



1
votes

Vous pouvez définir un bouton de trois manières à Android: 1. visible 2. Invisible 3. Allé

Utilisez bouton.invisible Pour masquer le bouton au lieu de bouton.gone Comme ce dernier enlève le bouton de la vue au lieu de cacher. C'est la raison pour laquelle vous obtenez une exception de pointeur NULL.


0 commentaires

0
votes

Vous pouvez essayer le code ci-dessous:

    if (code == null || code.equals("")
    {
        startbtn.setVisibility(View.INVISIBLE);
    }
    else
    {
        startbtn.setVisibility(View.VISIBLE);
    }


0 commentaires