我为用户提供了一个明暗的选项。
日志中的错误:
引起:
java.lang.IllegalStateException
:您必须使用Theme.Sherlock
,Theme.Sherlock.Light
,Theme.Sherlock.Light.DarkActionBar
或衍生产品。
错误发生在MainActivity中的setContentView(R.layout.activity_main);
。
MainActivity
public class MainActivity extends SherlockFragmentActivity {.....public static int globalTheme;
Context context;
protected void onCreate(Bundle savedInstanceState) {
context = getApplicationContext();
mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = mySharedPreferences.edit();
editor.putBoolean("proxy", false);
editor.commit();
if (mySharedPreferences.getString(Preferences.PREF_THEME, "1").trim().equals("1"))
globalTheme = R.style.Sherlock___Theme;
else
globalTheme = R.style.Sherlock___Theme_Light;
setTheme(globalTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
我没有在清单中添加内容,因为主题应该动态更改 的AndroidManifest.xml
<uses-sdk android:minSdkVersion="7"
/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="com.belasheuski.activities.MyApplication"
>
<activity
android:name="com.belasheuski.activities.MainActivity"
android:label="@string/name_main"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
API 7上发生此错误。在API 15上,一切都运行良好。
答案 0 :(得分:1)
我是这样设置的......
setTheme(isLightTheme ? R.style.MyApp_Light : R.style.MyApp);
样式定义看起来像......
<style name="MyApp.Light" parent="@style/Theme.Sherlock.Light.ForceOverflow">
<item name="overlayedActionBarBackground">@color/overlayedActionBarLight</item>
...
</style>
<style name="MyApp" parent="@style/Theme.Sherlock.ForceOverflow">
<item name="overlayedActionBarBackground">@color/overlayedActionBarDark</item>
...
</style>
这很好用。所以我认为你从ABS中选择了错误的样式定义。
干杯!
答案 1 :(得分:0)
错误消息告诉您错误,您的主题必须是“Theme.Sherlock,Theme.Sherlock.Light,Theme.Sherlock.Light.DarkActionBar或衍生产品。”
这是在API 7上发生但在API 15上没有,因为API 15具有本机ActionBar支持,因此使用它,而在API 7上则不是这样,因此需要主题。
答案 2 :(得分:0)
从错误出发:
您必须使用Theme.Sherlock,Theme.Sherlock.Light,Theme.Sherlock.Light.DarkActionBar或衍生物。&#34;
您的自定义style
似乎未从Sherlock
主题继承。检查styles.xml
文件夹中的values
文件,确保它们继承自其中一个文件。