Como evitar o código duplo em execução clicando duas vezes rapidamente em um botão no Android

Se eu clicar rapidamente no meu botão no meu aplicativo Android, parece que o código por trás dele é executado duas vezes. Se eu clicar no botão de menu duas vezes, a atividade que precisa ser iniciada onclick é iniciada duas vezes e eu tenho que sair dela duas vezes.

Isso é realmente chato porque se eu clicar muito rápido para botões de menu eu posso carregar um monte de atividades em segundo plano e devo sair deles um por um, então isso é claramente um estado de bugs do meu aplicativo que eu quero corrigir isso.

O que posso fazer com este problema?

Eu uso onClickListeners simples e botões

EDITAR:

Em relação às respostas e comentários meus botões de menu são assim:

top20Button.setOnClickListener(new OnClickListener()
{
    public void onClick(View v)
    {
        favButton.setClickable(false);
        nearButton.setClickable(false);
        highlightedButton.setClickable(false);
        top20Button.setClickable(false);

        Intent i = new Intent();
        i.putExtra("showDialog", false);
        i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        i.setClass(Search.this, Top20.class);
        startActivity(i);
        finish();

    }
});

Depois de toda esta correcção, continua a mesma: S Quando clico como uma pessoa louca, múltiplas actividades estão na pilha do histórico e tenho que sair várias vezes.

Alguma sugestão ? O que estou fazendo errado?

questionAnswers(8)

yourAnswerToTheQuestion