IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

Password & ConfirmPassword Validation Android Not Working

I have two pages .I am trying to pass Password field value through Bundle & Check this value with ConfirmPassword field . Validation not working .May I know what is the correct way to achieve my objective?Maybe this question too basic, but i did't find any suitable solution.Please Help me out.

Here is my code :

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

        EditTextUserPass= (EditText) findViewById(R.id.UserHiddenPass);
        EditTextUserPass.setVisibility(View.GONE);

        Imagepassone = (ImageButton) findViewById(R.id.ButtonPassOne);
        Imagepasstwo = (ImageButton) findViewById(R.id.ButtonPassTwo);

        Imagepassone.setOnClickListener(imgButtonHandlerone); 
        Imagepasstwo.setOnClickListener(imgButtonHandlertwo); 


        image = (ImageView) findViewById(R.id.imagefirstpasscode);
        image2 = (ImageView) findViewById(R.id.imagesecondpasscode);
        image3=(ImageView)findViewById(R.id.imagethirdpasscode);
        image4=(ImageView)findViewById(R.id.imagefourpasscode);

    }


    View.OnClickListener imgButtonHandlerone = new View.OnClickListener() {


        public void onClick(View v) { 

            if(v.getId() == R.id.ButtonPassOne) {

                nbStep++;

                changeStepBackground(nbStep);
            }
        }
   };
   public void changeStepBackground(int i) { 
        // four step switch
        switch(i) {
            case 1:
                image.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("1");

            break;
            case 2:
                image2.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("1");
            break;
            case 3:
                image3.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("1");
            break;
            case 4:
                image4.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("1");
            break;


        }
    }

   View.OnClickListener imgButtonHandlertwo = new View.OnClickListener() {



    public void onClick(View v) { 

           if(v.getId() == R.id.ButtonPassTwo) {

               nbStep++;

               changeStepBackground2(nbStep);
           }
       }
  };
  public void changeStepBackground2(int i) { 

        switch(i) {
            case 1:
                image.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("2");
            break;
            case 2:
                image2.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("2");
            break;
            case 3:
                image3.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("2");
            break;
            case 4:
                image4.setImageResource(R.drawable.passselect);
                EditTextUserPass.setText("2");
            break;


        }
    }

}
    @Override
    public void onBackPressed() {
       moveTaskToBack(true); 
       UserPasscode.this.finish();
    }

    public void gotoconfirmpasscode(View v)

    {
        String UserPass=EditTextUserPass.getText().toString();  
        int numberOfImages=nbStep;
        if(numberOfImages!=4)
        {   
        }
        else
        { 

             Bundle b = new Bundle();
             b.putString("PASSWORD", UserPass);

        Intent intent = new Intent(UserPasscode.this,UserConfirmPasscode .class);
        intent.putExtras(b);
        startActivity(intent);
        }       

    }
}

2nd Page :

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_confirm_passcode);
        EditTextUserConfirmPass= (EditText) findViewById(R.id.UserHiddenConfirmPass);
        EditTextUserPass= (EditText) findViewById(R.id.UserHiddenPass);
        EditTextUserConfirmPass.setVisibility(View.GONE);

        UserHiddenConfirmPass2= (EditText) findViewById(R.id.UserHiddenConfirmPass2);
        UserHiddenConfirmPass2.setVisibility(View.GONE);

        Imagepassone = (ImageButton) findViewById(R.id.ButtonPassOne);
        Imagepasstwo = (ImageButton) findViewById(R.id.ButtonPassTwo);

        Imagepassone.setOnClickListener(imgButtonHandlerone); 
        Imagepasstwo.setOnClickListener(imgButtonHandlertwo); 


        image = (ImageView) findViewById(R.id.imagefirstpasscode);
        image2 = (ImageView) findViewById(R.id.imagesecondpasscode);
        image3=(ImageView)findViewById(R.id.imagethirdpasscode);
        image4=(ImageView)findViewById(R.id.imagefourpasscode);
    }

View.OnClickListener imgButtonHandlerone = new View.OnClickListener() {


        public void onClick(View v) { 

            if(v.getId() == R.id.ButtonPassOne) {

                nbStep++;

                changeStepBackground(nbStep);
            }
        }
   };
   public void changeStepBackground(int i) { 
        // four step switch
        switch(i) {
            case 1:
                image.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("1");
            break;
            case 2:
                image2.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("1");
            break;
            case 3:
                image3.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("1");
            break;
            case 4:
                image4.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("1");
            break;


        }
    }

   View.OnClickListener imgButtonHandlertwo = new View.OnClickListener() {



    public void onClick(View v) { 

           if(v.getId() == R.id.ButtonPassTwo) {

               nbStep++;

               changeStepBackground2(nbStep);
           }
       }
  };
  public void changeStepBackground2(int i) { 

        switch(i) {
            case 1:
                image.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("2");
            break;
            case 2:
                image2.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("2");
            break;
            case 3:
                image3.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("2");
            break;
            case 4:
                image4.setImageResource(R.drawable.passselect);
                EditTextUserConfirmPass.setText("2");
            break;


        }
    }
                                        }

    public void gotoMain(View v)
    {
        Bundle b = getIntent().getExtras();
        String venName = b.getString("PASSWORD"); 
        UserHiddenConfirmPass2.setText(venName);

        Bundle c = new Bundle();
        String UserPass=c.getString("CONFIRMPASSWORD");
        EditTextUserConfirmPass.setText(UserPass);

        c.putString("CONFIRMPASSWORD", EditTextUserConfirmPass.getText().toString());

        int numberOfImages=nbStep;
        if(numberOfImages!=4 )
        {   
        }

        if(!venName.equals(UserPass)){

        }

        else{

        Intent intent = new Intent(this,MainActivity .class);
        startActivity(intent);  
        }
    }
}

Upvotes: 1

Views: 20368

Answers (4)

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

The == operator is used when we have to compare the String object references. If two String variables point to the same object in memory, the comparison returns true.

The equals method is used when we need to compare the content of the text present in the String objects. This method returns true when two String objects hold the same content (i.e. the same values).

To compare two strings for equality, use equals( ). It has this general form:

boolean equals(Object str)

Here, str is the String object being compared with the invoking String object. It returns true if the strings contain the same characters in the same order, and false otherwise.

Logic Courtesy

https://developer.android.com/reference/java/lang/Object.html

Upvotes: 1

Ram
Ram

Reputation: 61

Why don't you try with 2 password field in single activty.?

like bellow

login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/txtpwd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword"
        android:hint="Password" />
    
    <EditText
        android:id="@+id/confpwd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword"
        android:hint="Confirm Password" />

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Login" />

</LinearLayout>

and now in your

example.java

TextView txtPwd = (TextView)findViewById(R.id.txtpwd);
        
        TextView txtConfPwd = (TextView)findViewById(R.id.confpwd);
        
        final String strPwd = txtPwd.getText().toString();
        final String strConfPwd = txtConfPwd.getText().toString();
        
        Button loginbtn = (Button)findViewById(R.id.btn_login);
        
        loginbtn.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if (strPwd.equals(strConfPwd)) {
                    //password and confirm passwords equal.go to next step
                } else {
                    //passwords not matching.please try again
                }
            }
        });

Upvotes: 0

Manish Dubey
Manish Dubey

Reputation: 4306

String comparison is wrong. Always compare String with .equals() method. Change this:

if(venName!=UserPass)

to this:

System.out.println("venName :: "+venName);
System.out.println("UserPass :: "+UserPass);
if(!venName.equals(UserPass))

Upvotes: 3

Damien R.
Damien R.

Reputation: 3373

Try to replace if(venName!=UserPass) by if(!venName.equals(UserPass)). This is the correct way to compare Strings.

Upvotes: 1

Related Questions