Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓密码更改活动_Android_String_Android Intent_Android Activity_Passwords - Fatal编程技术网

Android 安卓密码更改活动

Android 安卓密码更改活动,android,string,android-intent,android-activity,passwords,Android,String,Android Intent,Android Activity,Passwords,我想在我的应用程序中实现一个密码更改活动,这是我为我的活动编写的代码,但我认为我应该将字符串密码变量声明到其他地方,因为我的新密码更改成功,并且在我关闭应用程序之前一直有效,当我再次运行它时,旧密码是正确的。我对Android开发非常陌生,任何答案/建议都将不胜感激 更改密码: public class Change_Password extends Activity { //---- public SharedPreferences prefs; private

我想在我的应用程序中实现一个密码更改活动,这是我为我的活动编写的代码,但我认为我应该将字符串密码变量声明到其他地方,因为我的新密码更改成功,并且在我关闭应用程序之前一直有效,当我再次运行它时,旧密码是正确的。我对Android开发非常陌生,任何答案/建议都将不胜感激

更改密码:

public class Change_Password extends Activity {
    //----
     public SharedPreferences prefs;
      private String prefName = "MyPref";
      private static final String TEXT_VALUE_KEY = "nothing";
      //-----

    public static String Password="soha";

        public static String getPassword()
        {
            return Password;
        }


@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.change_password);


    Button btnCancel=(Button)findViewById(R.id.btnCancel);
    btnCancel.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            finish();
        }
    });

    final EditText txtNewPassword=(EditText)findViewById(R.id.txtNewPassword);
    final EditText txtCurrentPassword=(EditText)findViewById(R.id.txtCurrentPassword);
    final EditText txtConfirmPassword=(EditText)findViewById(R.id.txtConfirmNewPassword);
    Button btnSave=(Button)findViewById(R.id.btnSave);
    btnSave.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            if(txtConfirmPassword.getText().toString().equalsIgnoreCase("") |
                    txtCurrentPassword.getText().toString().equalsIgnoreCase("") |
                    txtCurrentPassword.getText().toString().equalsIgnoreCase(""))
                {
                    Toast.makeText(getBaseContext(),"Please Complete the Information", Toast.LENGTH_SHORT).show();
                }
                 else
                 if(!txtNewPassword.getText().toString().equalsIgnoreCase(txtConfirmPassword.getText().toString()))
                  {
                    Toast.makeText(getBaseContext(),
                    "These Passwords Don't Match !", Toast.LENGTH_SHORT).show();
                   }
                 else
                 if(!getPassword().equalsIgnoreCase(txtCurrentPassword.getText().toString()))
                    {
                         Toast.makeText(getBaseContext(),
                            "Current Password is Incorrect!", Toast.LENGTH_SHORT).show();
                     }
                   else
                    {
                     ///------- //---save the values in the EditText view to preferences---  
                    prefs = getPreferences(MODE_PRIVATE);
                     SharedPreferences.Editor editor = prefs.edit();
                     editor.putString(TEXT_VALUE_KEY, txtNewPassword.getText().toString());
                     //---saves the values---
                        editor.commit();       
                     ///--------
                      //Password=txtNewPassword.getText().toString();
                      Toast.makeText(getBaseContext(),
                              Password, Toast.LENGTH_SHORT).show();
                      }

                 }
           });

}

@Override
public void onAttachedToWindow() {
   this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
  super.onAttachedToWindow();


}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if(keyCode == KeyEvent.KEYCODE_HOME)

       BackToMainIntent();

 else if(keyCode==KeyEvent.KEYCODE_BACK)
   {
     BackToMainIntent();
  }
   return false;
}



public void BackToMainIntent()
{
    Intent intent = new Intent(this, Main.class);
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
       startActivity(intent);
  }
}
这里是我的主要活动:

 public class mainC extends Activity {



        private EditText uPass;
        private Button loginBtn;
        private Button Btn_Exit;
        private ImageView Image;

        ///------
        public SharedPreferences prefs;
        private String prefName = "MyPref";
        private static final String TEXT_VALUE_KEY = "1234";
        ////----------
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.loginpage);

            Image=(ImageView)findViewById(R.id.NFCImage);
            Image.setAlpha(100);
            Btn_Exit=(Button)this.findViewById(R.id.Btn_exit_app);
            Btn_Exit.setOnClickListener(new OnClickListener() {

                public void onClick(View arg0) {


                    Intent _Intent =new Intent(Intent.ACTION_MAIN);
                    _Intent.addCategory(Intent.CATEGORY_HOME);
                    _Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(_Intent);

                }
            });

            setUpViews();
        }
        @Override
        protected void onResume() {
            super.onResume();

            uPass.setText("");

            uPass.setInputType(InputType.TYPE_CLASS_TEXT| InputType.TYPE_TEXT_VARIATION_PASSWORD);
            uPass.setTextColor(Color.parseColor("#888888"));
        }
        private void setUpViews() {

             uPass=(EditText)findViewById(R.id.usrPassTxt);

            uPass.setOnFocusChangeListener(new View.OnFocusChangeListener(){

                public void onFocusChange(View v, boolean hasFocus) {

                        if(hasFocus){
                            uPass.setInputType(InputType.TYPE_CLASS_TEXT| InputType.TYPE_TEXT_VARIATION_PASSWORD);

                            uPass.setText("");
                        }
                }


            });


            loginBtn=(Button)findViewById(R.id.Btn_Login);


              loginBtn.setOnClickListener(new OnClickListener() {
                private String pass;

                Intent myIntent;

                public void onClick(View v) {

                    pass=uPass.getText().toString();

                    ///-----
                    SharedPreferences prefs = getSharedPreferences(prefName, MODE_PRIVATE);
                    String passtemp = prefs.getString(TEXT_VALUE_KEY, "nothing");
                    if( pass.equalsIgnoreCase(passtemp)) 
                    ///-----
                    //if( pass.equalsIgnoreCase(Change_Password.getPassword()))
                    {
                        myIntent=new Intent(mainC.this,Main.class);
                        myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        System.out.println("---IF---");
                    }

                    else{
                        myIntent=new Intent(mainC.this,ErrorPage.class);


                        System.out.println("---ELSE---");
                    }

                    startActivity(myIntent);
                }
            });
        }
        @Override
        public void onBackPressed() {

            finish();
        }

    }
这里

if(pass.equalsIgnoreCase(更改\u Password.getPassword()))

您正试图从以前的活动中调用一个方法,该方法不是在活动或应用程序的其他组件之间共享数据的有效方法

在您的情况下,您可以使用来存储密码,而不是使用
静态
字段或方法

请参阅我们在应用程序中使用SharedReferences的以下教程:


这里的问题是,您的所有操作都在内存中运行,我的意思是,您的密码变量(静态)在内存中,您在更改密码时分配了它,并且它处于ok状态


但是,当您再次启动应用程序时,password的值是1234,因为您有密码!xD,您必须将de password存储在其他地方,例如使用SharedReferences。

使用我已更改了问题中的代码,但请您告诉我,我应该在哪里为我的登录页编写类似下面的代码来记住保存的密码//---加载SharedReferences对象--SharedReferences prefs=getSharedReferences(prefName,MODE_PRIVATE);将此
SharedReferences prefs=getSharedReferences(prefName,MODE_PRIVATE);String passtemp=prefs.getString(TEXT_VALUE_键,“nothing”);if(pass.equalsIgnoreCase(passtemp))
内部登录。setOnClickListener@ShadiS:在您的登录活动中添加
publicsharedpreferences;私有字符串prefName=“MyPref”;私有静态最终字符串文本\u值\u KEY=“1234”在添加更改时重新创建之前_Password@ShadiS:与您在loginBtn.setOnClickListener中添加的代码相同的代码使用内部的btnSave.setOnClickListener按钮,并使用'if(!passtemp.equalsIgnoreCase(txtrentpassword.getText().toString())
代替
if(!getPassword().equalsIgnoreCase(txtCurrentPassword.getText().toString())`@ShadiS:如果您仍然有问题,请使用