子活动继承的屏幕方向

问题描述 投票:5回答:2

我有一个Base活动(扩展AppCompactActivity),它被所有活动扩展。我的问题是,如果我将android:screenOrientation="portrait"从Manifest文件设置为基本活动,为什么不将其设置为扩展此活动的所有活动。这是我的清单文件

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".BaseActivity"
        android:screenOrientation="portrait"/>
    <activity android:name=".OtpActivity"></activity>
</application>
android android-activity screen-orientation
2个回答
4
投票

如果要为所有子活动设置方向,可能最好在基本活动上使用如下代码

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

在Manifest中,它的目标是实例化的确切活动,例如:如果它是.BaseActivity,那么只有实际的.BaseActivity启动才会有它的xml配置。 xml中设置的值不适用于代码继承层次结构,而是每个活动启动都需要在manifest.xml中拥有它自己的标记。继承不适用于AndroidManifest.xml。


1
投票

注意:在android:screenOrientation="portrait"中是清单文件中注册的每个屏幕或活动的属性,因此如果您不在清单中的每个活动中提及此属性,那么它将采用默认值,因此我们必须为每个活动提及此属性,即使活动由提及此属性的其他活动扩展继承不适用于AndroidManifest.xml。

© www.soinside.com 2019 - 2024. All rights reserved.