2016-05-10 7 views
0

私は以下のコードを持っています。既存の背景にイメージビューを追加します。しかし、イメージが作成された後、私はそれをドラッグしようとすると、プログラムがクラッシュします...誰もそれが動作しない理由についてのアイデアを持っていますか?ドラッグ可能な画像ビューを既存の相対ビューに追加

ballbutton.setOnClickListener (new View.OnClickListener(){ 
     @Override 
     public void onClick(View view){ 
      ImageView iv = new ImageView(getApplicationContext()); 
      iv.setImageDrawable(getDrawable(R.drawable.ball)); 
      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
      lp.addRule(RelativeLayout.RIGHT_OF, R.id.resistorbutton); 
      iv.setLayoutParams(lp); 
      iv.setOnTouchListener(new myListener()); 
      relativeLayout.addView(iv); 
     } 
    }); 

次のようにログは次のとおりです。

---------クラッシュ

E/AndroidRuntimeの始まり:致命的な例外:メイン プロセス:com.example.dan。ボール、PID:2795 java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'void android.view.ViewGroup.invalidate()'を呼び出そうとしています com.example.dan.circuit.ball $ myListener.onTouch MainActivity.java:77) android.view.View.dispatchTouchEvent(View.java:9290) (android.view.View.View.View.View.View.View.java:2553) (android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)) at android .view.View.View.View.View.View.ViewView.TransformedTouchEvent(ViewGroup.java:2553) (android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)) (android.view.View.View.TreeViewedTouchEvent(ViewGroup.java:2553)) android.view .ViewGroup.dispatchTouchEvent(ViewGroup.java:2197) とandroid.view.View.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553) とandroid.viでeW.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197) at com.android.internal.policy.PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:2403) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow。 java:1737) android.app.Activity.dispatchTouchEvent(Activity.java:2765) com.android.internal.policy.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2364) android.view.View。 (ViewRootImpl.java:4230) android.view.ViewRootImpl $ ViewPostImpl.java:409 6) android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3642) (android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3695)) (android.view.ViewRootImpl $ InputStage.forward ViewRootImpl.java:3661)android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3669) でandroid.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:3787) で でandroid.view.ViewRootImpl $ (ViewRootImpl.java:3642) (android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3642) tImpl.java:3695) android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3661) at android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3669) at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3642) android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922) android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl。Javaの:5896) android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857) でandroid.view.InputEventReceiver.dispatchInputEventでandroid.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6025) (InputEventReceiverで。 Javaの:185) android.os.MessageQueue.nativePollOnce(ネイティブメソッド) でandroid.os.Looper.loopでandroid.os.MessageQueue.next(MessageQueue.java:323) (Looper.java:135)で (ネイティブメソッド) at roid.internal.os.ZygoteInit $ MethodAndArgsCaller.run com.android.internal.os.ZygoteInit.mainで(ZygoteInit.java:726) (ZygoteInit.java:616)

+0

あなたのlogcatを投稿してください –

答えて

0

OK、私はこの問題を解決するために管理私自身。私のmyListenerクラスでは、私が必要としなかったビューを再描画するためにinvalidate()を使用していました。

関連する問題