0

我尝试为我的应用程序设置和存储密码,但它根本不起作用。密码应该是第一次设置然后返回主页,然后当用户再次打开它时,密码应该被存储但不知何故它没有存储它。

PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences passfile = getSharedPreferences("ans",0);
    String pass = passfile.getString("ans", null);

    check.setOnClickListener(new OnClickListener () {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String answer1 = answer.getText().toString();


            //Check that user typed in an answer
            if(answer1.length()<8){
                Toast.makeText(CheckPwActivity.this, "Answer must be 8 characters long", Toast.LENGTH_SHORT).show();
                answer.setText("");
                answer.requestFocus();
                return;
            }
            answer.getEditableText().toString();
            //check if the answer is valid
            if (answer1.equals("ans")) {
                Intent intent2 = new Intent(CheckPwActivity.this,MainActivity.class);
                startActivity(intent2);


        }else{ 
            return;

        }


    }});



    }
public void setPassword(String key, String value) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();
    Editor preferenceEditor = context.getSharedPreferences("password", 8).edit();
    preferenceEditor.putString(key, value);
    preferenceEditor.commit();
}

public static String getPassword(String filename) {
    return context.getSharedPreferences("password", 2).getString(filename,"");
}
4

1 回答 1

0

您错误地使用了共享首选项,在您设置的密码中,您获得了共享首选项,但随后您又获得了它,但在不同的上下文中

这就是您使用共享首选项所需的全部内容

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();

然后当你想设置它时,你使用你刚刚得到的编辑器

editor.putString(key,pass).commit;

然后从共享偏好中获取它,您只需这样做

preferences.getString(key,defaultString);
于 2013-10-19T00:41:07.233 回答