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

Asked

Viewed 127 times

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 to: But it didn’t work out so well.

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

2 answers

0


If what you want is for the button to change the visibility of the view in each click, alternate from visible to invisible can do so:

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 is "arrow" first the visibility before the test what made this 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 the view but also that of all its "ancestors ".

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
            }
        }
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.