2012-08-13 61 views
1

好的,我正在關注一本android書籍,並且他們正在使用擴展PreferenceActivity的類將設置添加到數獨遊戲中,該類由一個intent調用,它所做的只是addPreferencesFromResource(R.xml .settings),這種方法已被棄用,它不工作了,這裏是一本書的代碼:Android SDK使用PreferenceActivity添加設置

package org.example.sudoku; 

import android.os.Bundle; 
import android.preference.PreferenceActivity; 

public class Prefs extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.settings); 
    } 

} 

現在我已經調查此事,發現你有實例PreferenceManager爲了做到這個,但在這個例子中,我發現他們從PreferenceFragment擴展Prefs類(不像書中的PreferenceActivity),我設法如下處理代碼:

/* 
* this is for use from API version 11 and after... 
* 
*/ 
package org.example.sudoku; 

import android.os.Bundle; 
import android.preference.PreferenceFragment; 
import android.preference.PreferenceManager; 

public class Prefs extends PreferenceFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Make sure default values are applied. In a real app, you would 
     // want this in a shared function that is used to retrieve the 
     // SharedPreferences wherever they are needed. 
     PreferenceManager.setDefaultValues(getActivity(), 
       R.xml.settings, false); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.settings); 
    } 

} 

但是這並沒有完成這項工作,我不知道它是否因爲我從意圖調用這個類而這個類擴展了PreferenceFragment而不是PreferenceActivy,或者這不是做這件事的方法,有人可以幫我理解這個嗎?

+1

是否有必要使用PrefrenceActivity/PreferenceFragment?使用SharedPreferences偏好設置= getSharedPreferences(PREF_FILE_NAME,MODE_PRIVATE);也可以實現相同的功能。 – Swayam 2012-08-13 16:00:29

+0

如果你想以我的方式來做,我可以與你分享整個代碼。 :) – Swayam 2012-08-13 16:01:17

+0

偉大的,是的,我會做任何方式,我仍然在努力學習如何做這些事情,無論如何有什麼區別做你的方式嗎? – ershin69 2012-08-13 16:18:00

回答

2
final String PREF_SETTINGS_FILE_NAME = "PrefSettingsFile"; 

看您的喜好變量值。

SharedPreferences preferences = getSharedPreferences(PREF_SETTINGS_FILE_NAME, MODE_PRIVATE); 
      prefSettingsValue1= preferences.getInt("value1", 1); // default value of prefSettingsValue1 will be 1 in case you are trying to read a non-existent value. You can specify it according to your wish. (like I have done for the next value) 
      prefSettingsValue2= preferences.getInt("value2", 0); 
      prefSettingsValue3= preferences.getInt("value3", 1); 

值到您的首選變量。

SharedPreferences preferences = getSharedPreferences(PREF_SETTINGS_FILE_NAME, MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putInt("vaule1", prefSettingsValue1); 
     editor.putInt("value2",prefSettingsValue2); 
     editor.putInt("value3",prefSettingsValue3); 
     editor.commit(); 

注:無需使用任何XML文件來存儲偏好。只需將這些值保存在首選變量中,稍後在應用程序中讀取它們即可。不只是整數,你也可以分別使用getStringputString函數來讀寫字符串getput。此外,您不需要擴展任何首選活動/片段。

相關問題