Android ориентация макета ландшафта (планшет) - PullRequest
0 голосов
/ 12 июня 2019

Я хочу, чтобы мое приложение работало только на книжной ориентации для мобильных телефонов и работало только на альбомной ориентации для планшетов.

Но я не установил ни одного android: screenOrientation = "XXXXXXX" в манифесте.(Может быть, это плохо, что не делать) И я использую это для всех своих действий:

if(getResources().getBoolean(R.bool.portrait_only)){
   if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
     requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
   isMobile = true
} else
    requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

У меня есть три макета, например:

activity_main (layout) (для мобильного только в портретном режиме)

activity_main (layout-large-land)

activity_main (layout-xlarge-land)

CASE CRASH:

Когда планшет заблокирован в портретном режиме (что означает, что автоматическое вращение отключено), он загружает макет activity_main (мобильная версия) в ландшафтном режиме вместо макета - (x) большой земли.Таким образом, происходит сбой приложения, потому что некоторые виджеты не существуют на моем мобильном макете. isMobile равно false , поэтому при связывании компонентов происходит сбой, поскольку их нет в этом макете:

 if (!isMobile) {
        mClientButton = findViewById<View>(R.id.client) as ImageButton
        mStatButton = findViewById<View>(R.id.stat) as ImageButton
        mOptionButton = findViewById<View>(R.id.option) as ImageButton
}

Где я что-то не так делаю?Если вам нужна дополнительная информация, сообщите мне.

РЕШЕНИЕ:

Еще нет

...