java - 为什么输入的密码没有在我的 IF 语句中进行比较?(sharedpreference)

标签 java android if-statement sharedpreferences

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

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;
            }

        }



        });
}

最佳答案

您正尝试使用错误的 key 检索存储的密码。即改变:

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

致:

String storedpassword = passwdfile.getString(PREF_PASSWORD, null);

关于java - 为什么输入的密码没有在我的 IF 语句中进行比较?(sharedpreference),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19506595/

相关文章:

java - 如何使用反射返回二维数组?

android - ViewPager 内的 ScrollView

android - 屏幕自动锁定后继续运行应用程序 - Phonegap (Android/iOS)

java - 如何知道 2 位是否可以进行 xor java

c++ - 带有 if 语句的字符串

java - PowerMockito doThrow 不抛出异常

Java - 子类型枚举或子类

java - Jasper 报告不适用于 docker 容器中的服务器(Spring Boot Java 应用程序)

android - 错误:任务 ':app:compileDebugKotlin'的执行失败

Java:if、else if 和 else 算作一个语句吗?