- 此问题在此处已有答案**:
"Non-static method cannot be referenced from a static context" error(4个答案)
3小时前关门了。
我正在尝试创建一个类,它获取我的虚拟Android屏幕的尺寸,然后在终端中打印宽度和高度。
ScreenDimensions.java:
class ScreenDimensions {
Context context;
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
WindowMetrics metrics = windowManager.getMaximumWindowMetrics();
Rect bounds = metrics.getBounds();
private int dWidth = bounds.width();
private int dHeight = bounds.height();
public void showDisplayDimensions() {
Log.i("DISPLAY HEIGHT", String.valueOf(dWidth));
Log.i("DISPLAY WIDTH", String.valueOf(dHeight));
}
}
MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
ScreenDimensions.showDisplayDimensions();
setContentView(new Menu(this));
}
}
它说非静态方法(showDisplayDimensions)不能从静态上下文引用,但我不明白为什么我的MainActivity类被认为是静态的。
2条答案
按热度按时间hfyxw5xn1#
静态方法属于类,而不是示例,因此在调用
ScreenDimensions.showDisplayDimensions();
时,它会看到ScreenDimensions
是一个类,因此应该是一个名为showDisplayDimensions()
的静态方法。若要调用对象上的方法,需要类
ScreenDimensions
的示例对onCreate
方法可见。通常,您需要创建示例,或者访问示例,因此:
会是个解决办法。
yebdmbv42#
看一看如何在JAVA中使用静态方法https://www.geeksforgeeks.org/static-method-in-java-with-examples/
看起来您使用showDisplayDimensions方法时好像它是一个静态方法,但实际上它不是。如果要使用此方法,您需要示例化类ScreenDimensions的一个对象。