2016-07-14 2 views
4

Il y a deux boutons, le bouton A démarre une autre activité dans son onClickListener en utilisant la méthode simple Activity.startActivity(), le bouton B fait un autre travail dans son onClickListener. Lorsque je clique sur le bouton B et immédiatement après le bouton A, alors une nouvelle activité est démarrée, un événement cycle de vie onPause() pour l'ancienne activité est déclenché, mais aussi l'événement onClick pour le second bouton est déclenché, mais après Activity.onPause() conduit à des incohérences d'état dans mon application.Android: événement de clic après Activity.onPause()

Existe-t-il un moyen d'empêcher la remise des événements tactiles après un onPause() sans utiliser l'indicateur isPaused?

** Edit: ** Mon code:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button buttonA = (Button) findViewById(R.id.activity_button); 
     buttonA.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(MainActivity.this, TestActivity.class)); 
      } 
     }); 

     Button buttonB = (Button) findViewById(R.id.log_button); 
     buttonB.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.e("TEST", "onClick"); 
      } 
     }); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     Log.e("TEST", "onPause"); 
    } 
} 

Fondamentalement, si vous êtes assez rapide et cliquez sur le bouton B juste après le bouton A, puis onClick B est tiré après OnPause.

+1

Pourriez-vous poster un code de ce que vous essayez de faire pour le rendre plus clair à quiconque essaie d'aider? –

+0

Je ne veux tout simplement pas que les événements click soient fournis après le lancement de onPause(). – Mariusz

+0

il n'y a aucun moyen que l'événement onClick se déclenche automatiquement. Si vous mettez votre code alors nous pouvons mieux comprendre pour trouver notre problème – Sayem

Répondre

2

Dans OnClickListener du bouton A, désactivez le bouton b.

Button.setEnabled(false); 

Juste activer le bouton de l'onClickListener de A ou à onResume en fonction de vos besoins.

+0

Merci pour cette réponse, cependant si ma vue hiérarchique est vraiment complexe, je devrais désactiver de nombreuses vues. – Mariusz

+1

@Mariusz remplace l'activité # dispatchTouchEvent (MotionEvent ev) 'alors – pskink