java - 手势识别一直报空指针

 叶蕊2502860197 发布于 2022-10-26 10:34

在滑动的时候就会报出空指针异常。

代码

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.
 * 

* 将每个界面的上一步下一步按钮抽取到父类中 */ 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)
                        
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有