В вашем коде есть несколько проблем:
String text = editText.getText().toString();
preferences = getSharedPreferences("Profile_" + text, Activity.MODE_PRIVATE);
SharedPreferences.Editor preferencesEditor = preferences.edit();
preferencesEditor.putString(PN, editText.getText());
Если пользователь вводит «home» в EditText, вы создаете файл настроек с именем «Profile_home» и сохраняете его имя в том же файле?Вам нужно сохранить сгенерированные пользователем имена файлов в другом файле, имя которого вы знаете, чтобы вы могли получить к нему доступ в своем коде.
Вторая проблема:
preferences = getSharedPreferences("Profile_" + "", Activity.MODE_PRIVATE);
String take_profile_name = preferences.getString("profile_name", null);
Выпытаюсь открыть настройки "Profile_".Этот файл не существует(?).Второй параметр getString не должен быть нулевым, иначе вы добавите нулевую ссылку в ваш список строк, что приведет к ошибке.Замените его пустой строкой "".
Редактировать: Вот небольшой обходной путь, чтобы получить все пользовательские именованные предпочтения:
private void SavePreferences() {
String text = editText.getText().toString();
preferences = getSharedPreferences("ProfileNames", Activity.MODE_PRIVATE);
SharedPreferences.Editor preferencesEditor = preferences.edit();
// increment index by 1
preferencesEditor.putInt("profile_count", preferences.getInt("profile_count", 0) + 1);
// save new name in ProfileNames.xml with key "name[index]"
preferencesEditor.putString("name" + (preferences.getInt("profile_count", 0) + 1), editText.getText());
preferencesEditor.commit();
}
public void LoadList() {
preferences = getSharedPreferences("ProfileNames", Activity.MODE_PRIVATE);
List<String> profileNames = new LinkedList<String>();
int profileCount = preferences.getInt("profile_count", 0);
for (int i = 1; i <= profileCount; i++) {
profileNames.add(preferences.getString(name + i, ""));
}
listItems.addAll(profileNames);
adapter.notifyDataSetChanged();
}