Reputation: 75788
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
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
Reputation: 61
Why don't you try with 2 password field in single activty.?
like bellow
<?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
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
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
Reputation: 3373
Try to replace if(venName!=UserPass)
by if(!venName.equals(UserPass))
.
This is the correct way to compare Strings.
Upvotes: 1