Java 为什么输入的密码不在我的IF语句中比较?(SharedReference)

Java 为什么输入的密码不在我的IF语句中比较?(SharedReference),java,android,if-statement,sharedpreferences,Java,Android,If Statement,Sharedpreferences,我正在做我的作业,我不知道为什么If语句没有将密码存储在ShredReference中,并与在此页面中输入的密码进行比较。我真的想知道我做错了哪些变量或特定部分?请帮助大家 package com.wheresmyphone; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import

我正在做我的作业,我不知道为什么If语句没有将密码存储在ShredReference中,并与在此页面中输入的密码进行比较。我真的想知道我做错了哪些变量或特定部分?请帮助大家

package com.wheresmyphone;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Check_Activity extends Activity {

public static final String passwdfile = "passwd";

String passwd;
private static final String PREF_PASSWORD = "PassWord";
protected EditText PassWordField;
protected Button EnterButton;

SharedPreferences sharedpref;   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_check_);

    final EditText userpassword = (EditText)findViewById(R.id.editText1);

    Button b = (Button)findViewById(R.id.button1);

    sharedpref = getSharedPreferences(passwdfile, 0);





    b.setOnClickListener(new View.OnClickListener() {

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

            String passwd = userpassword.getText().toString();
            SharedPreferences passwdfile = getSharedPreferences("passwd",0);
            SharedPreferences.Editor editor = sharedpref.edit();
            editor.putString(PREF_PASSWORD, passwd);
            editor.commit();
            //commit data
            String storedpassword = passwdfile.getString(passwd, null) ;  


            if (passwd.equals(storedpassword)) {

            startActivity(new Intent(Check_Activity.this, MainActivity.class));


                finish();




            }else {
                Toast.makeText(Check_Activity.this, "Incorrect Password, Please try again!", Toast.LENGTH_LONG).show();
                return;
            }

        }



        });
}

您试图用错误的密钥检索存储的密码。即改变:

String storedpassword = passwdfile.getString(passwd, null);
致:


您是否尝试从
storedpassword
password
记录结果?您的意思是我应该将if(password.equals(storedpassword)){……}和,如何从上一页引用密码?请帮忙@用户2893221:对不起,我没有完全明白。。。以前的什么
SharedReferences
提供持久存储,因此只要您能够访问
上下文
实例(例如
活动
服务
应用程序
等),您就应该能够从应用程序中的任何位置检索存储的密码。对此表示抱歉,我的意思是我想把上一页输入的密码引用到上面的页面!!我是否应该声明一些变量或字符串以实现此目的?如果我理解正确,您希望将密码从一个活动转移到另一个活动?如果是这种情况,请将密码作为额外的一段数据提供给
Intent
-。如果没有,请澄清你认为是“前一页”和“上面的页面”。也许最好也开始一个新问题,因为它有点超出了你在这里提出的问题的范围。
String storedpassword = passwdfile.getString(PREF_PASSWORD, null);