OnKeyListener ne fonctionne pas

J'essaie de mettre en œuvre une animation sur l'événement clé. Le même code fonctionne bien sur OnClickListener mais OnKeyListener, rien ne se passe. Même pas de message d'erreur sur Logcat.

Aidez-moi à résoudre ce problème. Voici mon code. Dites-moi où je me trompe.

  • Pourquoi Android WebView refuse-t-il l'entrée des utilisateurs?
  • Quel est le bon système de contrôle gratuit de la source pour le développement d'eclipse?
  • Inflatable disposition dans le contrôle personnalisé - comment?
  • Restauration de périphériques exécutant Jelly Bean ainsi que des versions ultérieures à Jelly Bean lors de l'utilisation des données de l'application
  • SearchView développe / collapse l'animation dans Android
  • Coordonnées Android onTouchEvent Skip around
  • package com.example.SliderImage; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.ViewFlipper; public class SliderImage extends Activity { ViewFlipper flipper; String value; int i; int menuArray[] = {R.id.gtmain, R.id.gtmini, R.id.gtmore}; protected void showPrevious() { // TODO Auto-generated method stub } protected void setInAnimation(Animation inFromRightAnimation) { // TODO Auto-generated method stub } protected void setOutAnimation(Animation outToLeftAnimation) { // TODO Auto-generated method stub } protected void showNext() { // TODO Auto-generated method stub } private Animation inFromRightAnimation() { Animation inFromRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f ); inFromRight.setDuration(500); inFromRight.setInterpolator(new AccelerateInterpolator()); return inFromRight; } private Animation outToLeftAnimation() { Animation outtoLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f ); outtoLeft.setDuration(500); outtoLeft.setInterpolator(new AccelerateInterpolator()); return outtoLeft; } private Animation inFromLeftAnimation() { Animation inFromLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f ); inFromLeft.setDuration(500); inFromLeft.setInterpolator(new AccelerateInterpolator()); return inFromLeft; } private Animation outToRightAnimation() { Animation outtoRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f ); outtoRight.setDuration(500); outtoRight.setInterpolator(new AccelerateInterpolator()); return outtoRight; } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); flipper = (ViewFlipper) findViewById(R.id.flipper); final Button miniButton = (Button) findViewById(R.id.gtmini); final Button mainButton = (Button) findViewById(R.id.gtmain); final Button moreButton = (Button) findViewById(R.id.gtmore); miniButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { flipper.setInAnimation(inFromRightAnimation()); flipper.setOutAnimation(outToLeftAnimation()); flipper.showNext(); } }); mainButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { flipper.setInAnimation(inFromLeftAnimation()); flipper.setOutAnimation(outToRightAnimation()); //flipper.showPrevious(); flipper.showNext(); } }); moreButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { flipper.setInAnimation(inFromLeftAnimation()); flipper.setOutAnimation(outToRightAnimation()); // flipper.showPrevious(); flipper.showNext(); } }); mainButton.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub String a1=String.valueOf(keyCode); Log.i("listvalaaaaaaaaaa",a1); if (keyCode==66) { //String value=mainButton.getText().toString(); if(value.equalsIgnoreCase("GO TO MAIN")) { //startActivity(new Intent(Start.this,MainEpg.class)); } if(value.equalsIgnoreCase("GO TO MINI")) { //startActivity(new Intent(Start.this,MiniEpg.class)); } } if (keyCode==22) { Log.i("insideright","ghkhkjhk"); flipper.setInAnimation(inFromRightAnimation()); flipper.setOutAnimation(outToLeftAnimation()); flipper.showNext(); } int c = moreButton.getId(); int b = mainButton.getId(); int a = moreButton.getId(); menuArray[0] = b; menuArray[1] = c; menuArray[2] = a; moreButton.setId(menuArray[i]); miniButton.setId(menuArray[++i]); mainButton.setId(menuArray[++i]); mainButton.requestFocus(); i = 0; //mainButton.requestFocus(); mainButton.setSelected(true); flipper.setInAnimation(inFromRightAnimation()); flipper.setOutAnimation(outToLeftAnimation()); flipper.showNext(); if (keyCode==21) { int a11 = moreButton.getId(); int b1 = mainButton.getId(); int c1 = moreButton.getId(); menuArray[0] = c1; menuArray[1] = b1; menuArray[2] = a11; moreButton.setId(menuArray[i]); miniButton.setId(menuArray[++i]); mainButton.setId(menuArray[++i]); mainButton.requestFocus(); i = 0; //mainButton.requestFocus(); mainButton.setSelected(true); /* flipper.setInAnimation(inFromRightAnimation()); flipper.setOutAnimation(outToLeftAnimation()); flipper.showPrevious();*/ } return true; } }); } } 

    2 Solutions collect form web for “OnKeyListener ne fonctionne pas”

    KeyCode s dépend du clavier que vous utilisez. KeyCode signifie que vous pouvez obtenir un KeyCode différent de différents claviers pour la même clé. Et rappelez-vous, à partir de la documentation ,

    View.OnKeyListener n'est utile que pour les claviers matériels; Une méthode de saisie de logiciel n'a aucune obligation de déclencher cet auditeur.

    Voici comment j'ai implémenté un écouteur clé:

     this.m_vwJokeEditText.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2) { if (arg2.getAction() == KeyEvent.ACTION_DOWN) { if (arg1 == KeyEvent.KEYCODE_DPAD_CENTER || arg1 == KeyEvent.KEYCODE_ENTER) { // do something here return true; } } return false; } }); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.