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); 

그리고이 ..

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); 

PreferenceScreen입니다 그리고 나는이 오류가 :

이 .xml.xml 대신 .XML의 소요 왜

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

?

+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