Click button performs an action second click on the same button performs different action

0

I need to know how a first click on the button performs an action, a second click on the same button performs a different action

Would that be possible?

I tried: But it did not work very well.

myButton.setOnClickListener(new OnClickListener(){
    public void onClick(View v){
        myLayout.setVisibily(View.VISIBLE);
        if (myLayout.isShown()){
            myLayout.setVisibility(View.INVISIBLE);
        }
    }
});
    
asked by anonymous 12.03.2015 / 00:00

2 answers

0

If you want the button to change the visibility of the view in every click switch, from visible to invisible you can do this:

myButton.setOnClickListener(new OnClickListener(){
    public void onClick(View v){
        if(myLayout.getVisibility() == View.VISIBLE){
            myLayout.setVisibility(View.INVISIBLE);
        }
        else{
            myLayout.setVisibility(View.VISIBLE);
        }
    }
});

Your code was close, the problem was that "moved" the visibility before the test first, which made it always true . Change it to:

myButton.setOnClickListener(new OnClickListener(){
    public void onClick(View v){

        if (myLayout.isShown()){
            myLayout.setVisibility(View.INVISIBLE);
        }
        else{
            myLayout.setVisibility(View.VISIBLE);
        }
    }
});  

Note that view.isShown() is not equivalent view.getVisibility() == View.VISIBLE . view.isShown() not only checks the visibility of view but also that of all ancestors .

    
12.03.2015 / 11:15
0

Yes, it is possible.

public class MyClass extends Activity {

    /**
    * @Variável: hasClicked
    * @Tipo: booleana
    * @Descrição: Para verificarmos se algum toque foi feito no botão, poderemos usar uma variável do tipo Booleana.
    *   Se você precisa verificar se apenas 1 toque foi feito, este tipo de variável pode ser usada. Caso contrário, teremos que usar um outro tipo.
    */

    Boolean hasClicked;

    @Override
    public void onCreate (Bundle cicle) {
        super.onCreate(cicle);
        setContentView(R.layout.main);

        /**
        * Injetar onClickListener no seu botão desejado.
        */

        ((Button) findViewById(R.id.button_click)).setOnClickListener(handler);

    }

    View.OnClickListener handler = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /**
            *    @função: isto, primeiramente, vai verificar se a variável hasClicked é falsa, se sim, vai executar sua primeira função.
            *  Se for verdadeira, ela vai executar sua segunda função....
            */
            if(!hasClicked) {
                hasClicked = true;
                // Executar primeira função
            } else { 
                // Executar segunda função
            }
        }
    }
}
    
12.03.2015 / 00:12