0

我有一個活動需要修改SharedPreferences。IllegalArgumentException,路徑分隔符。該應用程序需要.xml.xml

public class AddingEmail extends ListActivity implements OnClickListener{ 

    private String newMail; 
    private SharedPreferences prefs; 
    private PreferenceManager prefMan; 
    private EditText emailAdd; 
    private EditText emailDel; 
    private ArrayList<String> prefList; 


@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.addingemail); 
    Log.d("On Addig EMAIL ACTIVITY","on Create"); 

    String name = "com.example.daemon3_preferences"; 
    prefs = this.getSharedPreferences(name, MODE_PRIVATE); 

這是PreferenceScreen ..

public class PreferencesScreen extends PreferenceFragment{ 

    private final String TAG = "PreferencesScreen"; 
    private Set<String> emails; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.d(TAG, "OnCreate"); 

     addPreferencesFromResource(R.xml.prefs); 

而且我有這樣的錯誤:

java.lang.IllegalArgumentException: File /data/data/com.example.daemon3/shared_prefs/com.example.daemon3_preferences.xml.xml contains a path separator

爲什麼它需要的.xml.xml代替.XML?

+0

您是否在其他地方打開共享首選項,如果可以,您是否可以發佈代碼段?如果沒有,清除你的應用數據,看看你是否仍然得到相同的異常。 – MCeley

+0

你的意思是我編的這個編輯? PreferenceFragment是從資源添加首選項的位置? 我清理了幾次,刪除了應用程序並再次停止。 我在模擬器和實際設備中出現相同的錯誤。 – Alberto

+0

我的意思是,你是否明確地在其他地方調用'getSharedPreferences'? – MCeley

回答

2

在此處將評論線索分解爲正式答案。

prefs = PreferenceManager.getDefaultSharedPreferences(this); 

PreferenceFragment以企圖用getSharedPreferences打開默認的首選項保存與PreferenceManager您的設置,你可能會被幹擾:


與其說

String name = "com.example.daemon3_preferences"; 
prefs = this.getSharedPreferences(name, MODE_PRIVATE); 

調用此的PreferenceManager這可能會導致特定的異常。

+0

是的,它運作良好。我不得不爲getApplicationContext()更改「this」,但現在它可以工作。謝謝! – Alberto