7

DisplayCutout を取得しようとしています

java.lang.NullPointerException: null オブジェクト参照で仮想メソッド 'android.view.DisplayCutout android.view.WindowInsets.getDisplayCutout()' を呼び出そうとしています

これが私のコードです:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
   DisplayCutout displayCutout;
   displayCutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
   //Logger.e(TAG, "MARGIN " + displayCutout.getSafeInsetTop());
}
4

7 に答える 7

4

あなたはあなたのコードを置くべきです

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
      DisplayCutout displayCutout;
      displayCutout = 
      getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
     //Logger.e(TAG, "MARGIN " + displayCutout.getSafeInsetTop());
    }
}
于 2019-06-05T15:22:42.867 に答える
3

getRootWindowInsets は、ビューがデタッチされている場合にのみ null を返します。正しいコンテキストから呼び出していることを確認してください。

于 2018-12-02T00:53:04.890 に答える