1
这是我第一次涉足使用首选项来更改应用程序主题,并且我似乎无法使其正常工作。这里是我的代码:应用主题不随选择的偏好而改变?
MainActivity.Java onCreate方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String values = getPrefs.getString("list","1");
if(values.contentEquals("1")){
setTheme(R.style.Holo_Dark);
}else if(values.contentEquals("2")){
setTheme(R.style.AppTheme);
}
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
TextView medEntry = (TextView)findViewById(R.id.med_name);
/* medEntry.setOnFocusListener(new FocusListner(){
}); */
}
Prefs.Java:
public class Prefs extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
array.xml的首选项:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="list">
<item>Dark</item>
<item>Light</item>
</string-array>
<string-array name="lValues">
<item>1</item>
<item>2</item>
</string-array>
</resources>
styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="Holo_Dark" parent="android:Theme.Holo">
</style>
</resources>
和我的清单:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Prefs"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.PREFS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
这并没有改变结果 – 2014-10-18 07:16:35
发布你提交值给编辑器的代码可能在整个应用程序的列表字符串中只有一个值,这就是为什么你看到相同的主题 – 2014-10-18 07:30:51
这些值是在array.xml中看到的如上所示,这些值可以在prefs.java中看到提交@ravi sharma – 2014-10-18 07:37:01