3

私のAndroidアプリの1つで、カスタムギャラリーを使用してギャラリーに画像を表示しています。(ギャラリーを交換するときに一度に1つのアイテムを表示するために、カスタムギャラリーを使用しています)

これが私がカスタムギャラリーに使用しているコードです:

public class CustomGallery extends Gallery {

     public CustomGallery(Context context) {
            super(context); 
        }

        public CustomGallery(Context context, AttributeSet attrs) {
            super(context, attrs);
        }

        public CustomGallery(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }

    private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) {
        return e2.getX() > e1.getX();
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        int kEvent;
        if (isScrollingLeft(e1, e2)) { // Check if scrolling left
            kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
        } else { // Otherwise scrolling right
            kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
        }
        onKeyDown(kEvent, null);
        return true;

    }
}

上記のコードは2.2、2.3などで正常に動作していますが、ICS 4.0でクラッシュすると、Nullポインタ例外GestureDetector.onTouchEventが発生します

助けてください 。

前もって感謝します。

4

2 に答える 2

1

私はこの同じ散発的な問題を抱えていました。MotionEventオーバーライド メソッドに渡される2 つのパラメーターonFlingが null である場合があり、呼び出すとe2.getX()例外がスローされます。これを修正するには、次のように onFling メソッドを開始します。

if (e1 == null || e2 == null) return false;
于 2015-05-26T17:14:56.580 に答える
0

Gallery View私はICS4.0でのみ同じ問題が発生してActivityいました.TabHostGalleryNullPointerException

//flag returned by onTouch event always false except when we are about to start activity
boolean flag = false;
//add a touch listener
myGallery.setOnTouchListener(new OnTouchListener() {
@Override
    public boolean onTouch(View v, MotionEvent event) {
        return flag;
    }
});

myGallery.setOnItemClickListener(new OnItemClickListener() {
    //handle clicks

    //set flag returned by touch listener to true
    flag = true;

    //now add logic to open up the activity
 }

ICS4 で例外が発生しました。

于 2012-07-19T12:41:59.453 に答える