密码& ConfirmPassword验证Android无效

时间:2014-03-26 10:48:50

标签: android android-intent

我有两页。我正在尝试将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);  
        }
    }
}

4 个答案:

答案 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个密码字段?

像波纹管一样

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>

现在在你的

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