安卓:在addOnGesturePerformedListener空指针异常 [英] Android: Nullpointer Exception in addOnGesturePerformedListener

查看:226
本文介绍了安卓:在addOnGesturePerformedListener空指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 公共类测试活动扩展了活动实现OnGesturePerformedListener {/ **当第一次创建活动调用。 * /
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);
    mLibrary = GestureLibraries.fromRawResource(这一点,R.raw.gestures);    GestureOverlayView手势=(GestureOverlayView)findViewById(R.id.gestureOverlayView1);
    gestures.addOnGesturePerformedListener(TestActivity.this);}

我的main.xml


  

 < ImageView的
    机器人:ID =@ + ID / imageView1
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:SRC =@绘制/ ic_launcher/>< android.gesture.GestureOverlayView
    机器人:ID =@ + ID / gestureOverlayView1
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT>
< /android.gesture.GestureOverlayView>


  
  


Activity.java:

 私人GestureLibrary mLibrary;公共无效onGesturePerformed(GestureOverlayView叠加,手势姿态){
    ArrayList的< prediction> predictions = mLibrary.recognize(姿态);
    Log.v(执行,执行);
    //我们希望至少有一个prediction
    如果(predictions.size()大于0){
        prediction prediction = predictions.get(0);
        //我们希望至少有一些信心的结果
        如果(prediction.score> 1.0){
            如果(prediction.name.equalsIgnoreCase(向右滑动)){
                //你的东西在这里//
                Toast.makeText(TestActivity.this,分辩
                        Toast.LENGTH_SHORT);
            }否则如果(prediction.name.equalsIgnoreCase(左刷卡)){                Toast.makeText(TestActivity.this,来氟米特
                        Toast.LENGTH_SHORT);
            }
        }
    }
}

运行此在日志下面的崩溃:


  


  05-17 15:18:52.124:E / AndroidRuntime(17266):致命异常:主要
05-17 15:18:52.124:E / AndroidRuntime(17266):了java.lang.RuntimeException:无法启动活动ComponentInfo {} t.e.st/t.e.st.TestActivity:显示java.lang.NullPointerException
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.ActivityThread.access $ 1500(ActivityThread.java:123)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:939)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.os.Handler.dispatchMessage(Handler.java:99)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.os.Looper.loop(Looper.java:130)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.ActivityThread.main(ActivityThread.java:3835)
05-17 15:18:52.124:E / AndroidRuntime(17266):在java.lang.reflect.Method.invokeNative(本机方法)
05-17 15:18:52.124:E / AndroidRuntime(17266):在java.lang.reflect.Method.invoke(Method.java:507)
05-17 15:18:52.124:E / AndroidRuntime(17266):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:847)
05-17 15:18:52.124:E / AndroidRuntime(17266):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
05-17 15:18:52.124:E / AndroidRuntime(17266):在dalvik.system.NativeStart.main(本机方法)
05-17 15:18:52.124:E / AndroidRuntime(17266):致:显示java.lang.NullPointerException
** 05-17 15:18:52.124:E / AndroidRuntime(17266):在t.e.st.TestActivity.onCreate(TestActivity.java:26)**
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 15:18:52.124:E / AndroidRuntime(17266):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
05-17 15:18:52.124:E / AndroidRuntime(17266):... 11个

请帮我解决这个问题。

在覆盖有XML格式。所以那不是问题及其说,错误是在管线26因此,它的ABT addOnGesturePerformedListener();


解决方案

如果你确信你有一个查看 @ + ID = gestureOverlayView1你的的main.xml 布局里面,然后尝试

  gestures.addOnGesturePerformedListener(本);

而不是

  gestures.addOnGesturePerformedListener(TestActivity.this);

(删除从测试活动说明 这个

public class TestActivity extends Activity implements OnGesturePerformedListener {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);

    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestureOverlayView1);
    gestures.addOnGesturePerformedListener(TestActivity.this);

}

My main.xml

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/ic_launcher" />

<android.gesture.GestureOverlayView
    android:id="@+id/gestureOverlayView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</android.gesture.GestureOverlayView>

Activity.java:

private GestureLibrary mLibrary;

public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
    ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
    Log.v("performed", "performed");
    // We want at least one prediction
    if (predictions.size() > 0) {
        Prediction prediction = predictions.get(0);
        // We want at least some confidence in the result
        if (prediction.score > 1.0) {
            if (prediction.name.equalsIgnoreCase("right swipe")) {
                // do you thing here//
                Toast.makeText(TestActivity.this, "rigth",
                        Toast.LENGTH_SHORT);
            } else if (prediction.name.equalsIgnoreCase("left swipe")) {

                Toast.makeText(TestActivity.this, "lef",
                        Toast.LENGTH_SHORT);
            }
        }
    }
}

Running this crashes with the following in Log:

05-17 15:18:52.124: E/AndroidRuntime(17266): FATAL EXCEPTION: main
05-17 15:18:52.124: E/AndroidRuntime(17266): java.lang.RuntimeException: Unable to start activity ComponentInfo{t.e.st/t.e.st.TestActivity}: java.lang.NullPointerException
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.ActivityThread.access$1500(ActivityThread.java:123)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.os.Looper.loop(Looper.java:130)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.ActivityThread.main(ActivityThread.java:3835)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at java.lang.reflect.Method.invokeNative(Native Method)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at java.lang.reflect.Method.invoke(Method.java:507)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at dalvik.system.NativeStart.main(Native Method)
05-17 15:18:52.124: E/AndroidRuntime(17266): Caused by: java.lang.NullPointerException
**05-17 15:18:52.124: E/AndroidRuntime(17266):  at t.e.st.TestActivity.onCreate(TestActivity.java:26)**
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 15:18:52.124: E/AndroidRuntime(17266):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
05-17 15:18:52.124: E/AndroidRuntime(17266):    ... 11 more

Please help me solve this.

The Overlay is there in xml. so thats not the issue and its says the error is in line 26. So its abt addOnGesturePerformedListener();

解决方案

if you are sure you have a View with @+id = "gestureOverlayView1" inside your main.xml layout, then try

gestures.addOnGesturePerformedListener(this); 

instead of

gestures.addOnGesturePerformedListener(TestActivity.this);

(remove the TestActivity specifier from this)

这篇关于安卓:在addOnGesturePerformedListener空指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆