Android“密码或用户名错误”消息框显示错误

时间:2013-07-31 11:58:14

标签: android android-activity

我正在开发一个包含用户名和密码的活动。我使用 else 部分中的 AlertDialog.Builder 来显示“密码或用户名错误”的消息。我没有将它连接到任何数据库仅用于测试目的,使用密码和用户名字符串来比较editText字段的值,在 if 条件下,如果匹配则将用户带到新屏幕名称“NewMenu”。我的问题是,当登录活动开始(应用程序运行)时,它首先显示消息,即 else 部分,我想在单击提交按钮后显示此消息密码或用户名错误。这是代码

public class Login extends Activity{


    private String pass=new String();
    private String nam=new String();
    private Button log;
    private View textreg;
    private EditText text1;
    private EditText text2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        textreg=(TextView) findViewById(R.id.textRegister);
        log=(Button) findViewById(R.id.btnsubmit);
        text1=(EditText) findViewById(R.id.txtuname);
        text2=(EditText) findViewById(R.id.txtpassword);



              //IF NOT REGISTERED USERS//
////A textview when clicked takes user to registeration page/////

        textreg.setOnClickListener(new OnClickListener() {

            @Override
                    public void onClick(View view) {
                startActivity(new Intent("com.DRMS.Register"));
                    }
                });


         //                                                        //
        // IF PASSWORD AND USERNAME CORRECT, GOTO NewMenu Activity //
       //                                                        //

        pass="12345";
        nam="12345";

        if(text1.getText().toString().equals(nam) && text2.getText().toString().equals(pass) ){


            log.setOnClickListener(new OnClickListener() {

                @Override

                        public void onClick(View view) {
                    startActivity(new Intent("com.DRMS.NewMenu"));
                        }
                    });

        }

            else{
            AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);

            dlgAlert.setMessage("wrong password or username");
            dlgAlert.setTitle("Error Message...");
            dlgAlert.setPositiveButton("OK", null);
            dlgAlert.setCancelable(true);
            dlgAlert.create().show();

            dlgAlert.setPositiveButton("Ok",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });
            }
    }
}

5 个答案:

答案 0 :(得分:4)

您的算法不正常。创建Activity时会调用onCreate(),因此它会在每次创建时检查用户名和密码。由于您从未设置文本字段,因此在第一次启动时它们的值永远不会正常,因此您始终在第一次启动时显示错误对话框。你应该做这样的事情:

protected void onCreate(Bundle savedInstanceState) {

    // 1. Call super() and init fields

    String pass="12345";
    String nam="12345";

    // 2. Set the onClickListener
    textreg.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            startActivity(new Intent("com.DRMS.Register"));
        }
    });

    // 3. Set the onClickListener for the Login button
    log.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            // 4. Check if fields are null
            if(text1.getText() != null && text2.getText() != null) {

                // 4.a check if username and password are OK
                if(text1.getText().toString().equals(nam) && 
                    text2.getText().toString().equals(pass) )
                {    
                    // Not null and OK, launch the activity            
                    startActivity(new Intent("com.DRMS.NewMenu"));
                } else {
                    // Username or password false, display and an error
                    AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);

                    dlgAlert.setMessage("wrong password or username");
                    dlgAlert.setTitle("Error Message...");
                    dlgAlert.setPositiveButton("OK", null);
                    dlgAlert.setCancelable(true);
                    dlgAlert.create().show();

                    dlgAlert.setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {

                        }
                    });
                }
            } else {
                // The fields are not filled.
                // Display an error message like "Please enter username/password
            }
        }
    });
}

答案 1 :(得分:0)

您应该在点击事件中编写此alertview代码。

log.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view)
    {
        if(text1.getText().toString().equals(nam) && text2.getText().toString().equals(pass) )
        {
            AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);

            dlgAlert.setMessage("wrong password or username");
            dlgAlert.setTitle("Error Message...");
            dlgAlert.setPositiveButton("OK", null);
            dlgAlert.setCancelable(true);
            dlgAlert.create().show();

            dlgAlert.setPositiveButton("Ok",
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                }
            });
        }
        else
        {
            startActivity(new Intent("com.DRMS.NewMenu"));
        }
    }
});

}

你不需要在oncreate方法中检查用户名n传递。

希望它能帮助!!

答案 2 :(得分:0)

public class Second extends Activity {

    private String pass = new String();
    private String nam = new String();
    private Button log;
    private View textreg;
    private EditText text1;
    private EditText text2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        textreg = (TextView) findViewById(R.id.textRegister);
        log = (Button) findViewById(R.id.btnsubmit);
        text1 = (EditText) findViewById(R.id.txtuname);
        text2 = (EditText) findViewById(R.id.txtpassword);

        // IF NOT REGISTERED USERS//
        // //A textview when clicked takes user to registeration page/////

        textreg.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                startActivity(new Intent("com.DRMS.Register"));
            }
        });

        // //
        // IF PASSWORD AND USERNAME CORRECT, GOTO NewMenu Activity //
        // //

        pass = "12345";
        nam = "12345";

        log.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                if (text1.getText().toString().equals(nam)
                        && text2.getText().toString().equals(pass)) {
                    startActivity(new Intent("com.DRMS.NewMenu"));
                } else {
                    AlertDialog.Builder dlgAlert = new AlertDialog.Builder(
                            getApplicationContext());

                    dlgAlert.setMessage("wrong password or username");
                    dlgAlert.setTitle("Error Message...");
                    dlgAlert.setPositiveButton("OK", null);
                    dlgAlert.setCancelable(true);
                    dlgAlert.create().show();

                    dlgAlert.setPositiveButton("Ok",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int which) {

                                }
                            });
                }
            }
        });

    }

}

答案 3 :(得分:0)

您应该在onClick方法中包含if / else条件。这将确保仅在单击按钮后执行。

答案 4 :(得分:0)

您的警告对话框代码将显示注册按钮的