子活动继承的屏幕方向

时间:2018-09-07 08:37:34

标签: android android-activity screen-orientation

我有一个基本活动(扩展AppCompactActivity),所有活动都对其进行扩展。我的问题是,如果我将清单文件中的android:screenOrientation="portrait"设置为基本活动,为什么不将其设置为扩展该活动的所有活动。这是我的清单文件

<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>

2 个答案:

答案 0 :(得分:4)

如果您想为所有子活动设置方向,也许最好在基本活动中使用以下代码

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

在清单中,它以实例化的确切活动为目标,例如如果它用于.BaseActivity,则只有实际的.BaseActivity启动才具有它的xml配置。 xml中设置的值不适用于代码继承层次结构,但是每次活动启动都需要在manifest.xml中拥有自己的标签。继承不适用于AndroidManifest.xml。

答案 1 :(得分:1)

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