我有两页。我正在尝试将Password
字段值传递给Bundle
&使用ConfirmPassword
字段检查此值。验证不起作用。可能我知道实现目标的正确方法是什么?也许这个问题太基础了,但我找不到合适的解决方案。请帮帮我。
这是我的代码:
@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);
}
}
}
第二页:
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);
}
}
}
答案 0 :(得分:3)
字符串比较错误。始终将String与.equals()
方法进行比较。
改变这个:
if(venName!=UserPass)
到此:
System.out.println("venName :: "+venName);
System.out.println("UserPass :: "+UserPass);
if(!venName.equals(UserPass))
答案 1 :(得分:1)
尝试将if(venName!=UserPass)
替换为(!venName.equals(UserPass))
。
这是比较字符串的正确方法。
答案 2 :(得分:1)
当我们必须比较String对象引用时,使用 ==
运算符。如果两个String变量指向内存中的同一个对象,则比较返回true。
当我们需要比较equals对象中存在的文本内容时,使用String方法。当两个String对象保持相同的内容(即相同的值)时,此方法返回true。
要比较两个字符串是否相等,请使用equals()。它具有以下一般形式:
boolean equals(Object str)
这里, str 是与调用String对象进行比较的String对象。如果字符串包含相同顺序的相同字符,则返回true,否则返回false。
逻辑礼貌
https://developer.android.com/reference/java/lang/Object.html
答案 3 :(得分:0)
为什么不在单个活动中尝试使用2个密码字段?
像波纹管一样<?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>
现在在你的
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
}
}
});