Как использовать @ ActivityInfo.ScreenOrientation

Я пытаюсь создать метод, который возвращает мне зависящую от экрана ориентацию, поскольку устройство является переносным или планшетом.

public int getScreenOrientation(boolean isTablet){ if(isTablet){ return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; } else { return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; } } 

Но когда я использую setRequestedOrientation(getScreenOrientation)); Я получаю lint-error. Must be one of: ActivityInfo.SCREEN_ORIENTATION_......... который я могу подавить, но это не похоже на чистый код.

Поэтому я обнаружил, что getRequestedOrientation использует @ActivityInfo.ScreenOrientation Annotation. Поэтому я попытался использовать его сам:

 @ActivityInfo.ScreenOrientation public int getScreenOrientation(boolean isTablet){ . . . } 

Но IDE дает мне сообщение о том, что Annotation @ActivityInfo.ScreenOrientation не удалось найти. Но он объявлен публичным в официальном-андроид-источнике.

Solutions Collecting From Web of "Как использовать @ ActivityInfo.ScreenOrientation"

Поместите следующий комментарий над раздражающим утверждением, где запускается проверка магии для аннотаций @IntDef и @StringDef , например:

 //noinspection ResourceType setRequestOrientation(lock); 

@IntegerRes этого попробуйте аннотацию @IntegerRes . Это должно сработать для вас, так как вы возвращаете целочисленный атрибут ресурса из android.R.attr.

https://developer.android.com/reference/android/support/annotation/IntegerRes.html http://developer.android.com/reference/android/R.attr.html#screenOrientation

Пример ниже работает для меня без ошибок IDE или предупреждений.

 @IntegerRes public static int getScreenOrientationPref() { if(sharedPreferences.getBoolean("LockOrientation", true)) { int orientation = sharedPreferences.getInt("Orientation", Configuration.ORIENTATION_LANDSCAPE); if(orientation == Configuration.ORIENTATION_LANDSCAPE) { return ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE; } else { return ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; } } return ActivityInfo.SCREEN_ORIENTATION_USER; }