0

ビューをMyCompassView拡張するクラスがあり、コンパスを描画します。SurfaceHolderアクティビティはサーフェス ホルダーでカメラを開き、最後に前述のクラスでオーバーレイする必要があります。アクティビティを上MainActivityにオーバーレイする方法は次のとおりです。SurfaceHolderMainActivity

myCameraSurfaceHolder = new SurfaceHolderActivity(this); setContentView(myCameraSurfaceHolder);それは機能し、カメラは表面ホルダーで正常に機能します。

MainActivity問題は、 の表面にのビューを重ねようとしたときですMyCompassView。それを達成するために、私は以下を使用しました:

loiViewInflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); loiViewInflater = LayoutInflater.from(getApplicationContext()); compassOverLayView = loiViewInflater.inflate(R.layout.activity_viewactivity, null); addContentView(compassOverLayView,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

しかし、センサーからのすべての読み取りで、方位角の値に基づいて異なるポインターの向きでコンパスを描画したいため、センサーリスナーのaddContentView(....)内に配置されます。onSensorChangedそして、logcat は不平を言い、以下のメッセージを生成します。エラーを修正するのを手伝ってください。

Logcat_OutPut:

04-26 04:07:21.295: E/AndroidRuntime(26921): FATAL EXCEPTION: main
04-26 04:07:21.295: E/AndroidRuntime(26921): java.lang.IllegalStateException: The  
specified child already has a parent. You must call removeView() on the child's parent  
first.
04-26 04:07:21.295: E/AndroidRuntime(26921):    at  
android.view.ViewGroup.addViewInner(ViewGroup.java:3739)
04-26 04:07:21.295: E/AndroidRuntime(26921):    at  
android.view.ViewGroup.addView(ViewGroup.java:3610)
04-26 04:07:21.295: E/AndroidRuntime(26921):    at  
android.view.ViewGroup.addView(ViewGroup.java:3586)
04-26 04:07:21.295: E/AndroidRuntime(26921):    at   
com.android.internal.policy.impl.PhoneWindow.addContentView(PhoneWindow.java:392)
04-26 04:07:21.295: E/AndroidRuntime(26921):    at   
android.app.Activity.addContentView(Activity.java:2004)
04-26 04:07:21.295: E/AndroidRuntime(26921):    at  

android.support.v7.app.ActionBarActivity.superAddContentView(ActionBarActivity.java:228)

4

1 に答える 1