5

可能重复:
公共布尔 onKey() 调用了两次?

这是我的代码

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,不知道为什么,但是当我点击一次键时,toast的代码会执行两次。我的代码有问题吗?

4

1 回答 1

12

我刚刚回答了一个非常相似的问题(这里)。问题是您正在激活KeyEvent.ACTION_DOWNKeyEvent.ACTION_UP。你应该只在以下情况下执行你的代码KeyEvent.getAction() == KeyEvent.ACTION_UP

于 2012-05-01T02:23:53.000 回答