【发布时间】:2023-03-03 23:09:01
【问题描述】:
我有 MyCompassView 类扩展视图并绘制指南针,SurfaceHolder 活动在表面支架上打开相机,最后,MainActivity 应该被上述类覆盖。我使用的方式在MainActivity上覆盖SurfaceHolder活动如下
myCameraSurfaceHolder = new SurfaceHolderActivity(this);
setContentView(myCameraSurfaceHolder); 找到了,相机在表面支架上工作正常。
问题是当我尝试用MyCompassView 的视图覆盖MainActivity 的表面时。为了实现这一点,我使用了:
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)
【问题讨论】:
标签: java android surfaceview android-sensors surfaceholder