在Android中使用WindowManager时类强制转换异常

时间:2012-04-14 11:28:28

标签: android

我动态获取屏幕高度的代码:

Display display = ((Activity) getContext()).getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;

错误:     错误:java.lang.ClassCastException:android.app.Application 完整的日志猫:http://pastebin.com/8zUNFUYn

编辑: 将代码更改为:

Display display =  (activity).getWindowManager().getDefaultDisplay();

        Point size = new Point();
        display.getSize(size);
        int width = size.x;
        int height = size.y;

工作但是,给出了一个新的错误,即display.getSize(size)不是一个方法。该API是否已被删除?

2 个答案:

答案 0 :(得分:2)

  

上下文

是Application和Activity的基类。由于您使用getContext()获取应用,因此将其转换为Activity会导致ClassCastExecption

答案 1 :(得分:1)

用这个替换你的行:

如果您在活动中使用此代码,请使用此:

Display display = this.getContext().getWindowManager().getDefaultDisplay();