Android View.OnKeyListener:单击一次,执行两次

时间:2012-05-01 02:16:07

标签: android view listener scrollview

  

可能重复:
  public boolean onKey() called twice?

这是我的代码

public class TestKeyActivity extends Activity {

private int i=1;
private ScrollView sv;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    sv=(ScrollView) this.findViewById(R.id.read_scrollView);

    sv.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {

        Toast.makeText(TestKeyActivity.this, "what is wrong!!!!"+(i++), 2).show();
            return true;
            }
            return false;
        }
    });
    }
}

我用他的Android模拟器和Eclipse,我不知道为什么,但是当我点击一次键时,代码 吐司将执行两次。 我的代码有问题吗?

1 个答案:

答案 0 :(得分:11)

我刚回答了一个非常相似的问题(here)。问题是您是在KeyEvent.ACTION_DOWNKeyEvent.ACTION_UP上激活的。您应该只在KeyEvent.getAction() == KeyEvent.ACTION_UP

时执行代码