Целочисленное Общее предпочтение всегда возвращает 0 - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь кодировать простую проверку пароля для защиты настроек моего приложения. Пароль должен быть сохранен в общем доступе. Main вызывает setPassword, когда sharedPreference возвращает ноль. Это сделано для того, чтобы убедиться, что пароль будет установлен, когда кто-то попытается ввести настройки в первый раз. Затем setPassword должен установить пароль и сохранить его в sharedPreference. Но при проверке, был ли установлен пароль, sharedPreference всегда возвращает 0.

это мое главное:

final Intent intentSetPasswords = new Intent(this, SetPasswordActivity.class);
    final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    passwordToCheck = sharedPreferences.getInt("PASSWORDSETTINGS", 0);

    //setting button on click listener
    buttonSetings.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //check if a password was set muss Überarbeitet werden
            passwordToCheck = sharedPreferences.getInt("PASSWORDSETTINGS", 0);
            Log.e("password", ""+ passwordToCheck);
            if(passwordToCheck==0){
                startActivity(intentSetPasswords);
            }else{
                startActivity(new Intent(MainActivity.this, PasswordCheckActivity.class));
            }
        }
    });

и это мой наборПароль:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_set_password);

    final Intent intentSettings = new Intent(this, SettingsActivity.class);


    buttonSetPassword = (Button)findViewById(R.id.buttonSetPassword);
    textViewSetPassword = (TextView)findViewById(R.id.textViewSetPasswordText);
    editTextPassword = (EditText)findViewById(R.id.passwordNumericSettingsSetPassword);
    final Intent intent = new Intent(this, MainActivity.class);
    buttonSetPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            counterButton++;
            switch (counterButton){
                case 1:
                    password = editTextPassword.getText().toString();
                    if (password.length() == 4){
                        Log.d("First Password", "taken");
                        buttonSetPassword.setText("Confirm Password!");
                        editTextPassword.setText("");
                    }else{
                        Log.d("First Password", "not taken");
                        textViewSetPassword.setText("The Password must be\nfour numbers long!");
                        password = "";
                        editTextPassword.setText("");
                        counterButton=0;
                    }
                    break;
                case 2:
                    passwordToConfirm = editTextPassword.getText().toString();
                    if (Integer.parseInt(passwordToConfirm)  == Integer.parseInt(password)){

                        Log.e("password", password);
                        Log.e("passwordToConfirm", passwordToConfirm);
                        SharedPreferences sharedPreferences = getSharedPreferences("PASSWORDS", 0);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putInt("PASSWORDSETTINGS", Integer.parseInt(password));
                        editor.commit();
                        startActivity(intentSettings);
                        finish();
                    }else{
                        textViewSetPassword.setText("The passwords aren't the same!\nTry again!");
                        buttonSetPassword.setText("Set Password");
                        editTextPassword.setText("");
                        passwordToConfirm = "";
                        password = "";
                        counterButton = 0;
                        startActivity(intent);
                    }
                    break;
            }
        }
    });
}

Я думаю, что есть проблема с sharedPreference, но я не понимаю, что.

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

Легко используйте библиотеку ниже для управления данными

https://github.com/orhanobut/hawk

0 голосов
/ 08 сентября 2018

Во-первых, проверьте значение counterButton и убедитесь, что ветвь случая 2 выполнена. Во-вторых, sharedPreferences для настройки и sharedPreferences для получения должны быть одинаковыми. Вы могли бы сделать так:

private final static String MyPREFERENCES = "MyPrefs"; //define two class fields
private SharedPreferences mSharedPreferences;

mSharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);//in activity Oncreate() methods. 


//and set or get in other place as you want.
0 голосов
/ 07 сентября 2018

Сначала вы получаете общие предпочтения, подобные этому

final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

Позже при установке пароля вы получите его, как показано ниже

SharedPreferences sharedPreferences = getSharedPreferences("PASSWORDS", 0);

Это две разные общие настройки. Используйте первые общие предпочтения. Для получения дополнительной информации обратитесь к этой странице https://developer.android.com/training/data-storage/shared-preferences

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...