2014-10-18 48 views
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> 

回答

0

使用此代碼的

if(values.equals("1") 

代替

if(values.contentEquals("1")) 
+0

這並沒有改變結果 – 2014-10-18 07:16:35

+0

發佈你提交值給編輯器的代碼可能在整個應用程序的列表字符串中只有一個值,這就是爲什麼你看到相同的主題 – 2014-10-18 07:30:51

+0

這些值是在array.xml中看到的如上所示,這些值可以在prefs.java中看到提交@ravi sharma – 2014-10-18 07:37:01

0

提供一個字符串,可能設立一個常數,以儘量減少錯別字的風險。 不要忘記取消並重新安裝應用程序,如果你在首選項中搞砸了某些東西。