手势识别一直报空指针
在滑动的时候就会报出空指针异常。
代码
package com.young.safeprogremm;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
/**
* Created by ASUS on 2016/11/16.
* <p>
* 将每个界面的上一步下一步按钮抽取到父类中
*/
public abstract class SetUpBaseActivity extends AppCompatActivity {
private GestureDetector gestureDetector; //= new GestureDetector(this, new MyOnGestureListener());
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState);
//获取手势识别器
//要想手势识别器生效,必须把手势识别器注册到
gestureDetector = new GestureDetector(this, new MyOnGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
private class MyOnGestureListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float startX = e1.getRawX();//得到按下的坐标
float endX = e2.getRawX();//得到抬起的坐标
if ((startX - endX) > 10) {
//下一步
next_activity();
} else if ((endX - startX) > 10) {
//上一步
pre_activity();
}
return true;
}
// return super.onFling(e1, e2, velocityX, velocityY);
}
public void pre(View view) {
pre_activity();
}
public void next(View view) {
next_activity();
}
//因为父类不知道子类的上一步,下一步具体的执行代码,所以要创建一个抽象类,让子类实现这个抽象类,根据自己的特新去事项
public abstract void next_activity();
public abstract void pre_activity();
//在父类中直接对子类中的返回键进行统一的处理
@Override
public void onBackPressed() {
super.onBackPressed();
}
/**
* 监听手机物理按键的事件
*
* @param keyCode 物理按键的标示
* @param event 按键的处理事件
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//判断keycode是否返回键的标示 true是可以屏蔽按键的,home键是无法屏蔽的。
//return true;
pre_activity();
}
return super.onKeyDown(keyCode, event);
}
}
异常信息
E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.GestureDetector.onTouchEvent(android.view.MotionEvent)' on a null object reference
at com.young.safeprogremm.SetUpBaseActivity.onTouchEvent(SetUpBaseActivity.java:35)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论