Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-只有创建视图层次结构的原始线程才能接触其视图异常?_Java_Android_Thread Exceptions - Fatal编程技术网

Java-只有创建视图层次结构的原始线程才能接触其视图异常?

Java-只有创建视图层次结构的原始线程才能接触其视图异常?,java,android,thread-exceptions,Java,Android,Thread Exceptions,我得到了上面的错误,不知道为什么。我正在开发一个摄像头应用程序,现在出现了一个错误。可能是textureView导致了错误。这是个例外: example.com.view.CameraActivity : Only the original thread that created a view hierarchy can touch its views. java.lang.RuntimeException at android.view.ViewRootImpl.checkThread(V

我得到了上面的错误,不知道为什么。我正在开发一个摄像头应用程序,现在出现了一个错误。可能是
textureView
导致了错误。这是个例外:

example.com.view.CameraActivity : Only the original thread that created a view hierarchy can touch its views.
java.lang.RuntimeException
  at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7101)
  at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1137)
  at android.view.ViewGroup.invalidateChild(ViewGroup.java:5254)
  at android.view.View.invalidateInternal(View.java:13669)
  at android.view.View.invalidate(View.java:13633)
  at android.view.View.invalidateParentIfNeeded(View.java:13822)
  at android.view.TextureView.setTransform(TextureView.java:483)
  at example.com.data.BasicFragment.configureTransform(BasicFragment.java:850)
  at example.com.data.BasicFragment.access$100(BasicFragment.java:69)
  at example.com.data.BasicFragment$2.onOpened(BasicFragment.java:182)
  at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:134)
  at android.os.Handler.handleCallback(Handler.java:751)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:173)
  at android.os.HandlerThread.run(HandlerThread.java:61)
    03-20 20:07:18.531 25889-26077/example.com.kamera E/AndroidRuntime: FATAL EXCEPTION: CameraBackground
  Process: example.com.kamera, PID: 25889
  android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
  at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7103)
  at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1137)
  at android.view.ViewGroup.invalidateChild(ViewGroup.java:5254)
  at android.view.View.invalidateInternal(View.java:13669)
  at android.view.View.invalidate(View.java:13633)
  at android.view.View.invalidateParentIfNeeded(View.java:13822)
  at android.view.TextureView.setTransform(TextureView.java:483)
  at example.com.data.BasicFragment.configureTransform(BasicFragment.java:850)
  at example.com.data.BasicFragment.access$100(BasicFragment.java:69)
  at example.com.data.BasicFragment$2.onOpened(BasicFragment.java:182)
  at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:134)
  at android.os.Handler.handleCallback(Handler.java:751)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:173)
  at android.os.HandlerThread.run(HandlerThread.java:61)

你知道是什么导致了这个错误吗?行
850
如下:
mTextureView.setTransform(矩阵)。为什么这里会出现错误?

我不是Android开发者,但您遇到的问题与Swing UI的问题类似-在这里,您也不能直接从另一个线程修改某些UI组件。必须从另一个线程使用invokeLater()来执行此操作,这样Swing dispatcher线程将自己执行所需的任务。原因是,如果两个线程同时写入相同的变量,则可能会发生一些难以跟踪的并发错误。
因此,您遇到的问题与异常情况完全一样:“只有创建视图层次结构的原始线程才能接触其视图”。尝试在您使用的视图技术中找到类似于invokeLater()的机制。

如果没有任何代码,我们可以重复错误消息所说的内容:您试图从与创建视图的线程不同的线程中修改视图。