之前,我看到这个片段在Height of statusbar?(and also Tiltebar)
这里找到:
Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop=
window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;
昨天,我试图在一个类中使用这个片段。AsyncTask
所以我将我的 Activity 实例发送到AsyncTask
类,在onCreate
Activity 中:
LongOperation loper = new LongOperation(this, vg, vArray, hintsArray,x_positionArray, y_positionArray);//Here `this` refers to current Activity
loper.execute("YES");
在 AsynkTask 类的 doInBackground 中,我只做了:
Thread.sleep(3000);
在onPostExecute
方法中,我复制上面的代码来计算状态栏和标题栏的高度。但是应用程序崩溃,没有任何有用的 logcat 登录。然后我评论一些这样的行:
Rect rectgle = new Rect();
Window window = activity.getWindow();
// window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
// int StatusBarHeight= rectgle.top;
contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT)
.getTop();
// int TitleBarHeight= contentViewTop - StatusBarHeight;
并且应用程序工作正常。所以看起来
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
导致应用程序崩溃,但我不知道为什么?我做错了什么吗?