0

我需要获取屏幕尺寸才能使我的应用程序正常工作。为此,我在主要活动中创建了 2 个函数,并通过非活动类中的对象调用它们。

由于某种原因,它一直在崩溃。为什么我不能调用这些函数?我如何解决它?

主要活动代码:

    public int getWidth(){
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    return width;
}

public int getHeight(){
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int height = display.getHeight(); 
    return height;
} 

非活动代码(调用部分):

    main Main = new main();
private int height = Main.getHeight();
private int width = Main.getWidth();

请注意,我知道这些方法已被弃用,但我不能使用 getSize(point); 方法,因为我正在为最低 API 级别 7 开发。

4

2 回答 2

3

您可以创建一个Constants包含您在 like 中初始化的静态字段onCreateActivity类:

public class Constants
{
    public static int DEVICE_WIDTH;
    public static int DEVICE_HEIGHT;
}

活动

onCreate(...)
{
    ...
    Constants.DEVICE_WIDTH  = this.getWidth();
    Constants.DEVICE_HEIGHT = this.getHeight();
}

当您需要这些值时,请使用以下命令调用它:

int deviceWidth = Constants.DEVICE_WIDTH;
于 2012-05-11T23:35:06.100 回答
1

你不能只Activity用它的构造函数创建一个并期望它被正确初始化。这不是它的工作原理。如果您只是使用构造函数调用,它将没有获取系统服务所需的上下文。您需要从活动的真实实例中获取此信息,然后将其传递给需要此数据的对象。如果没有更多信息/代码,提供更多细节是不切实际的。

于 2012-05-11T19:53:31.047 回答