Работа с SharedPreferences

227
16 июня 2017, 08:33

Не могу разобраться, почему не создается файл в папке пакета приложения с данными, которые я передаю.

Вот код:

public class SettingsActivity extends Fragment implements View.OnClickListener, View.OnFocusChangeListener {
    private TextInputLayout mUsernameLayout, currentIpLayout, prefLayout;
    private EditText mUsername, currentIp, pref;
    private Button changeIp, saveSettings;
    private View view;
    private SharedPreferences mSettings;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.activity_settings, container, false);
        mSettings = getActivity().getSharedPreferences(BasicSettings.APP_Preferences, Context.MODE_PRIVATE);
        mUsernameLayout = (TextInputLayout) view.findViewById(R.id.username_layout);
        currentIpLayout = (TextInputLayout) view.findViewById(R.id.ipdb_layout);
        prefLayout = (TextInputLayout) view.findViewById(R.id.pref_layout);
        currentIp = (EditText) view.findViewById(R.id.edit_text_ipCDB);
        mUsername = (EditText) view.findViewById(R.id.edit_text_username);
        pref  = (EditText) view.findViewById(R.id.edit_text_pref);
        changeIp = (Button) view.findViewById(R.id.changeIp);
        saveSettings = (Button) view.findViewById(R.id.saveSettings);
        changeIp.setOnClickListener(this);
        saveSettings.setOnClickListener(this);
        if(mSettings.contains(BasicSettings.APP_Preferences)){
            mUsername.setText(mSettings.getString(BasicSettings.APP_Preferences_UserName, ""));
            currentIp.setText(mSettings.getString(BasicSettings.APP_Preferences_IPDB, BasicSettings.RemoteDB_Adress));
            pref.setText(mSettings.getString (BasicSettings.APP_Preferences_Pref, ""));
        }
        return view;
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.saveSettings:
                onClickSaveSettings();
                break;
        }
    }
    private void onClickSaveSettings(){           
            SharedPreferences.Editor editor = mSettings.edit();
            editor.putString(BasicSettings.APP_Preferences_UserName, mUsername.getText().toString());
            editor.apply();
            Toast.makeText(getActivity().getApplicationContext(), "Данные были успешно сохранены", Toast.LENGTH_SHORT).show();
    }
}

Дело в том, что сообщений об ошибках нет, но файл с данными не появляется, как следствие они не считываются. Что я не так делаю?

Answer 1

Метод contains проверяет наличие ключа, а не файла. А ключа с именем BasicSettings.APP_Preferences у вас скорее всего нет.

Попробуйте так:

if(mSettings.contains(BasicSettings.APP_Preferences_UserName‌​)){
    ...
}
READ ALSO
Как узнать значение битов в массиве байт?

Как узнать значение битов в массиве байт?

Есть массив байт byte[10]В одном из элементов массива находится байт, биты которого содержат информацию об успешном/неудачном исходе операции

446
Система ролей вместе с JWT

Система ролей вместе с JWT

У меня в базе имеются таблицы аккаунты и ролиЯ хотел бы проверять возможность пользователя с определенной ролью получать необходимый контент

495
Встраивание groovy в java. Безопасность

Встраивание groovy в java. Безопасность

Как безопасно встроить groovy скрипт в java? ПояснюДопустим я подгружаю какой-то скрипт динамически в java

323