Отключить портретный режим на Android - PullRequest
0 голосов
/ 02 июля 2018

Я хочу, чтобы мое приложение запускалось только в альбомной ориентации, поэтому я добавил android:screenOrientation="landscape" в каждое действие в манифесте.

Но удивительно, что в Crashlytics происходит так много сбоев, и в данных показано, что сбой происходит, когда устройство находится в портретном режиме (почему это происходит в режиме пропорциональной передачи).

авария говорит

Caused by android.content.res.Resources$NotFoundException
Resource ID #0x7f0a001e
android.content.res.Resources.getValue (Resources.java:2327)
android.content.res.Resources.loadXmlResourceParser (Resources.java:3692)
android.content.res.Resources.getLayout (Resources.java:2143)
android.view.LayoutInflater.inflate (LayoutInflater.java:396)
android.view.LayoutInflater.inflate (LayoutInflater.java:354)
android.support.v7.app.AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.java:287)
android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:139)
com.xx.xxx.Activity.onCreate (Activity.java:42)
android.app.Activity.performCreate (Activity.java:5447)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1094)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2393)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2493)
android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:4014)
android.app.ActivityThread.access$900 (ActivityThread.java:166)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1289)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:136)
android.app.ActivityThread.main (ActivityThread.java:5584)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1268)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1084)
dalvik.system.NativeStart.main (NativeStart.java)

и это мой метод onCreate @ Override

   protected void onCreate(Bundle savedInstanceState) {
        setTheme(((AppTheme)getApplicationContext()).getCurrentTheme());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_layout);
        ButterKnife.bind(this);
        presenter = new Presenter(this);
        setupPages();
        enterImmersiveMode();
    }

Мне интересно, как на Crashlytics записывается, что происходит сбой, когда устройство находится в портретном режиме. поэтому я предполагаю, что когда он находится в портретном режиме, он не может получить макет, потому что весь макет (layout-land) не находится в папке макета.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы также можете изменить ориентацию во время выполнения с помощью setRequestedOrientation(android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);, но вам следует позвонить до setContentView

0 голосов
/ 02 июля 2018

Я не хочу поощрять лень. Вот ответ.

Однако, пожалуйста, используйте Google в следующий раз. Это базовая информация, которую вы можете легко найти.

Добавьте android:screenOrientation="landscape" к действию в манифесте.

    <activity android:name=".MainActivity"
        android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
...