[英]Why can't i set the visibility of my images in android studio?
我的APP应该根据某些变量显示和/或隐藏图像。 这是代码:
final ImageView greenSquare = (ImageView) findViewById(R.id.greensquare);
final ImageView greenBigSquare = (ImageView) findViewById(R.id.greenBIGsquare);
if (a) {
if (b) {
b = false;
a = false;
greenSquare.setVisibility(View.INVISIBLE);
greenBigSquare.setVisibility(View.VISIBLE);
} else {
b = true;
}
} else {
if (c) {
a = !a;
greenSquare.setVisibility(View.VISIBLE);
greenBigSquare.setVisibility(View.INVISIBLE);
}
}
这是XML
<ImageView
android:id="@+id/greenBIGsquare"
android:visibility="invisible"
opencv:srcCompat="@color/colorFollowMe" />
<ImageView
android:id="@+id/greensquare"
android:visibility="visible"
opencv:srcCompat="@color/colorAccent" />
但是它无法正常运行,并且会崩溃。
这是logcat
01-29 20:20:18.487 6535-6667 / pinwheel.redblock E / AndroidRuntime:致命例外:Thread-331进程:pinwheel.redblock,PID:6535 android.view.ViewRootImpl $ CalledFromWrongThreadException:仅创建视图的原始线程层次结构可以触摸其视图。 在android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6556)在android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:942)在android.view.ViewGroup.invalidateChild(ViewGroup.java:5081)在android.view。 View.invalidateInternal(View.java:12719)在android.view.View.invalidate(View.java:12683)在android.view.View.setFlags(View.java:10640)在android.view.View.setVisibility(View .java:7431)位于android.widget.ImageView.setVisibility(ImageView.java:1469)位于pinwheel.redblock.MainActivity_Show_camera.onCameraFrame(MainActivity_Show_camera.java:492 :)位于org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java: 391)在pinwheel.redblock.PortraitCameraView.access $ 400(PortraitCameraView.java:21)在pinwheel.redblock.PortraitCameraView $ CameraWorker.run(PortraitCameraView.java:289)在java.lang.Thread.run(Thread.java:818)
有谁能够帮助我? 谢谢
尝试使用@UiThread
注释方法
尝试这个:
runOnUiThread(new Runnable() {
@Override
public void run() {
greenSquare.setVisibility(View.INVISIBLE);
greenBigSquare.setVisibility(View.VISIBLE);
}
});
在更改可见性时,也可以在您的else块中使用它。
任何涉及用户界面的操作都必须在主线程或UI线程中完成
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.