无法从静态上下文中引用非静态 方法 setVisible(boolean)
时间: 2024-01-23 19:02:15 浏览: 20
这个错误通常会发生在你试图从静态上下文中调用非静态方法时。静态上下文是指在类级别上,而不是在对象级别上。因此,你需要确保你调用的方法是静态的,或者你需要创建一个类的实例来访问非静态方法。
在这种情况下,错误信息提示你尝试调用一个名为setVisible(boolean)的非静态方法。解决这个问题的方法是创建一个类的实例,并使用该实例来调用setVisible(boolean)方法。例如,如果你有一个名为frame的JFrame对象,你可以使用以下代码调用setVisible(boolean)方法:
```
frame.setVisible(true);
```
这将显示JFrame对象的窗口。请注意,这个示例中的setVisible(boolean)方法不是静态的,因此我们需要使用frame实例来调用它。
相关问题
无法从静态上下文中引用非静态 方法 setVisible(boolean)怎么解决
这个错误通常会发生在你试图从静态上下文中调用非静态方法时。静态上下文是指在类级别上,而不是在对象级别上。因此,你需要确保你调用的方法是静态的,或者你需要创建一个类的实例来访问非静态方法。
在这种情况下,错误信息提示你尝试调用一个名为setVisible(boolean)的非静态方法。解决这个问题的方法是创建一个类的实例,并使用该实例来调用setVisible(boolean)方法。例如,如果你有一个名为frame的JFrame对象,你可以使用以下代码调用setVisible(boolean)方法:
```
frame.setVisible(true);
```
这将显示JFrame对象的窗口。请注意,这个示例中的setVisible(boolean)方法不是静态的,因此我们需要使用frame实例来调用它。
分析下安卓imageview的setvisible方法,从源码角度分析
在 Android 中,ImageView 是一个常用的控件,通常用于显示图片。其中的 setVisible 方法是用来设置 ImageView 是否可见的方法。下面从源码角度分析一下这个方法的实现。
ImageView 的 setVisible 方法实际上是从 View 类继承而来的,其源码如下:
```
@Override
public void setVisible(boolean visible, boolean restart) {
super.setVisible(visible, restart);
mPrivateFlags &= ~PFLAG_DRAWABLE_STATE_DIRTY;
}
```
在这个方法中,首先调用了 View 类的 setVisible 方法,而该方法中的实现主要是设置 View 的 visibility 属性。而 ImageView 这个子类中,visibility 属性的设置方法是 setVisibility 方法。因此,如果想要设置 ImageView 的可见性,实际上应该调用的是 setVisibility 方法。
setVisible 方法的第二个参数 restart 表示是否需要重绘 View。在 ImageView 中,如果需要重绘,则会调用 ImageView 的 invalidate 方法,使其重绘。而在 invalidate 方法中,会标记 View 的状态为需要重绘,这个标记的状态就是 mPrivateFlags 变量中的 PFLAG_DRAWABLE_STATE_DIRTY 标记。因此,在 setVisible 方法中,还需要将这个标记清除,以便在下一次需要重绘时,重新标记。
综上所述,ImageView 的 setVisible 方法主要是继承自 View 类,并调用了其父类的 setVisible 方法,同时还需要清除重绘标记。如果想要设置 ImageView 的可见性,应该调用 setVisibility 方法。