9
votes

Effectuer un clic sur le bouton de SDK Android

Dès que la mise en page est créée, je veux qu'une touche soit cliquée automatiquement et que j'utilise bouton.performclick () code> pour cela.

Le problème est que cela ne fonctionne pas. On dirait que je ne peux pas faire cela au cours de la méthode Oncreate, Onstart, OnResume Code>. A quel moment est le bouton et ses événements créés, je peux donc effectuer un clic sur celui-ci? P>

Ceci P>

@Override
protected void onResume() {
    super.onResume();
    mybutton.performClick();
}


3 commentaires

Regardez ma réponse Stackoverflow.com/questions/14706886/...


Êtes-vous sûr que faire setContentView () , figueById () , SETONClickListener () et PerformClick () ne travail? Je suis juste curieux!


Ils travaillent. Le bouton n'est tout simplement pas cliqué, mais je n'ai aucune erreur


4 Réponses :


3
votes

Vous devez utiliser un ViewTeeobserver :

    ViewTreeObserver vto = mybutton.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            vto.removeOnGlobalLayoutListener(this);
            mybutton.performClick();
        }
    });


1 commentaires

Ce serait un bon choix dans ma situation si je vais tester cela sur des appareils avec API> 16



33
votes

Ceci a fonctionné pour moi dans un cas similaire: xxx

de cette façon, le bouton exécutable ne fonctionnera que si le bouton est déjà chargé sur la mise en page.


1 commentaires

J'aime le message runnable mais il s'avère que l'OP le faisait mal-.-



0
votes
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);

    myButton = (Button) findViewById(R.id.myButton);
    myButton.setOnClickListener(this);
}


@Override
public void onStart() {
    myButton.performClick();
}

@Override
public void onClick(View v) {
    // DO STUFF
}

1 commentaires

drôle qu'il pose une question ayant la réponse dans la question :)



3
votes

Qu'est-ce que je sens, semble que vous oubliez d'ajouter OnClickListner À votre avis, j'ai testé votre façon de fonctionner, J'ai fait quelque chose comme ci-dessous:

Définir le bouton de définition globalement BTN; code> p>

dans Oncreate () code> p>

@Override
    protected void onResume() {

        btn.performClick();
        super.onResume();
    }


1 commentaires

Oui, j'avais Setontouchlistener au lieu de Setonclicklistener. Merci