根据活动更改主题?

时间:2014-08-16 18:32:12

标签: android android-theme android-styles

我需要有两个或更多样式的应用程序(我现在只有两个,但将来将至少十个),我已经解决了样式部分。 但事情是清单,我需要启动相同的活动,但关联的主题不同。

<activity
            android:name=".StartActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/DefaultTheme"
            android:windowSoftInputMode="adjustPan">
            <intent-filter android:icon="@drawable/ic_launcher">
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".StartActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name_mc"
            android:screenOrientation="portrait"
            android:theme="@style/MCTheme"
            android:windowSoftInputMode="adjustPan">
            <intent-filter android:icon="@drawable/ic_launcher">
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
好吧,问题是我得到了重复的错误。 好吧,我知道我不能再进行两次相同的活动(至少这是我得到的例外)。

有解决方法吗? 我需要两个发射器。

问候。

2 个答案:

答案 0 :(得分:1)

如果您的活动名为StartActivity,那么您可以使StartActivityWithTheme1扩展StartActivity,StartActivityWithTheme2扩展StartActivity等等。因此,您拥有StartActivity中的所有逻辑。

此外,如果您想要多个启动器活动,请阅读此SO:Two launcher activities

答案 1 :(得分:0)

您可以以编程方式设置主题。请使用此方法 - http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29

要在运行时动态设置主题,请在调用setContentView()之前在activity的onCreate()方法中调用setTheme()。