我試圖實現一個可變形的相對佈局。所以,我實現這個代碼: -空指針異常,當我點擊setOnTouchListener
body.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// pass all touch events to the implementation
boolean consumed = false;
// handle move and bring to front
consumed = context.onTouchHandleMove(id, Window.this, v, event)|| consumed;
// alert implementation
consumed = context.onTouchBody(id, Window.this, v, event)|| consumed;
Log.e("Now touched ","Now in touch "+consumed);
return consumed;
}
});
當我拖我的看法,它的作品prefectly,但是當我點擊我得到空指針異常。
01-26 13:45:21.260: E/AndroidRuntime(980): FATAL EXCEPTION: main
01-26 13:45:21.260: E/AndroidRuntime(980): java.lang.NullPointerException
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.View.onAttachedToWindow(View.java:11709)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.View.dispatchAttachedToWindow(View.java:12125)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2450)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1207)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.Choreographer.doFrame(Choreographer.java:532)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.os.Handler.handleCallback(Handler.java:730)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.os.Handler.dispatchMessage(Handler.java:92)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.os.Looper.loop(Looper.java:137)
01-26 13:45:21.260: E/AndroidRuntime(980): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-26 13:45:21.260: E/AndroidRuntime(980): at java.lang.reflect.Method.invokeNative(Native Method)
01-26 13:45:21.260: E/AndroidRuntime(980): at java.lang.reflect.Method.invoke(Method.java:525)
01-26 13:45:21.260: E/AndroidRuntime(980): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-26 13:45:21.260: E/AndroidRuntime(980): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-26 13:45:21.260: E/AndroidRuntime(980): at dalvik.system.NativeStart.main(Native Method)
我在做什麼錯在這裏?
你能標出782線嗎? – AlexR 2015-01-26 18:19:42
我沒有。這是Android的運行時代碼錯誤View.java – 2015-01-26 18:22:09
哦,對不起,我沒有注意。我不熟悉android,但首先檢查2(onTouchHandleMove或onTouchBody)的哪個調用是負責的,然後檢查其中一個參數是否爲空,並確保這正是你想要的 – AlexR 2015-01-26 18:25:42