0

画像がホバリングされている時間を長くしたいので、これを試しました:

image.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent event) {
                Long start = null, end = null;
                switch (event.getAction()) {
                    case MotionEvent.ACTION_UP:
                        start = System.currentTimeMillis();
                       //do somethins....
                        break;
                    case MotionEvent.ACTION_DOWN:
                         end = System.currentTimeMillis();
                        //do something...
                        break;
                }
                if(end-start<1003){
                     //do something ....
                  }
                return true;
            }
        });

しかし、null例外が発生します。動作させるにはどうすればよいですか?

前もって感謝します、

4

3 に答える 3

1

「end」と「start」がまだnullのときに使用しているため、nullポインター例外が発生します。また、ACTION_DOWN は ACTION UP の前に発生します。ACTION_DOWN はビューに最初に触れたときに発生し、ACTION_UP は指を離したときに発生します。

また、onTouch メソッドの外で変数を定義する必要があります。そうしないと、ACTION_DOWN と ACTION_UP が同時に呼び出されることがないため、両方が初期化されることはありません。

Long start = 0L, end = 0L;

@Override
public boolean onTouch(View arg0, MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_UP:
            end = System.currentTimeMillis();
            //do something....
            if(end-start<1003){
                     //do something ....
            }
            return true;
        case MotionEvent.ACTION_DOWN:
            start = System.currentTimeMillis();
            //do something...         
            return true;
    }
}
于 2013-09-15T19:04:05.807 に答える
-2

この行を変更するだけです

Long start = null, end = null;

       Long start =0L;
       Long  end = 0L;
于 2013-09-15T18:56:16.110 に答える