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