1

私はこのエラーに遭遇しています:

09-13 18:20:50.183: ERROR/AndroidRuntime(300): java.lang.ArrayIndexOutOfBoundsException
09-13 18:20:50.183: ERROR/AndroidRuntime(300):     at android.view.MotionEvent.getY(MotionEvent.java:792)
09-13 18:20:50.183: ERROR/AndroidRuntime(300):     at android.widget.AbsListView.onTouchEvent(AbsListView.java:2040)

ここに問題があります: http://code.google.com/p/android/issues/detail?id=10238#c6

MotionEvent をある ListView から別の ListView に渡そうとすると、このエラーが発生します。ただし、これは、1 つの ListView に onClickListeners を含むビューがある場合にのみ発生します。

public boolean onTouch(View view, MotionEvent event) {

    if(event.getAction() == MotionEvent.ACTION_DOWN && !requestedFocus) {
        view.requestFocus();
        requestedFocus = true;
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
        requestedFocus = false;
    }

    if(view == leftListView && view.isFocused()) {
        rightListView.dispatchTouchEvent(event);
    } else if(view == rightListView && view.isFocused()) {
        leftListView.dispatchTouchEvent(event);
    }
    return false;
}

rightListView上記のコードでは、onClickListeners を持つビューを動的にロードするまで、すべて正常に動作します。次に、このビューが に渡すすべての MotionEventleftListViewによって、ArrayIndexOutOfBoundsException が発生します。期待通りの仕事leftListViewへのイベント。rightListView

これは、AbsListView の mActivePointerId == INVALID_POINTER、たとえば -1 が原因で発生するようです。リフレクションを使用してこの値を変更しようとしましたが、役に立ちませんでした。

それで、私の質問は、これに対する回避策はありますか?

私の目標は、2 つの ListView のスクロールを同期させることなので、別のメソッドが実行可能であれば、このメソッドを破棄します。ScrollListeners を使用してみましたが、他の問題が発生します。

前もって感謝します!

4

1 に答える 1

0

たとえば、配列があり、この配列のサイズは9で、index [10]を使用していると思います。

于 2012-10-23T00:49:10.753 に答える