安卓:在addOnGesturePerformedListener空指针异常 [英] Android: Nullpointer Exception in addOnGesturePerformedListener
本文介绍了安卓:在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 yourmain.xml
layout, then trygestures.addOnGesturePerformedListener(this);
instead of
gestures.addOnGesturePerformedListener(TestActivity.this);
(remove the
TestActivity
specifier fromthis
)这篇关于安卓:在addOnGesturePerformedListener空指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文