簡體   English   中英

檢查EditText空條目並進行驗證

[英]Checking EditText empty entries and validate it

我正在嘗試制作Android應用程序的注冊表格。 我已經使用MySQLite制作了數據庫適配器等。

我一直面臨的問題是對輸入到EditText控件中的條目的驗證。 當我單擊“注冊”按鈕時,信息應存儲在數據庫中,確保條目不為空,確認密碼與密碼匹配,最重要的是用戶名尚未使用。 我已經嘗試了每種方式進行此操作,但要么是遇到運行時強制關閉錯誤,要么是驗證沒有按照我想要的方式工作。

    final EditText unedit = (EditText) findViewById(R.id.unedit);
    final EditText passedit = (EditText) findViewById(R.id.passedit);
    final EditText conpassedit = (EditText) findViewById(R.id.conpassedit);
    final EditText nameedit = (EditText) findViewById(R.id.nameedit);
    final EditText emailedit = (EditText) findViewById(R.id.emailedit);
    final EditText mobedit = (EditText) findViewById(R.id.mobedit);

    Button register = (Button) findViewById(R.id.registerbutton);

    register.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String username = unedit.getText().toString();
            String password = passedit.getText().toString();
            String conpassword = conpassedit.getText().toString();
            String name = nameedit.getText().toString();
            String email = emailedit.getText().toString();
            String mobileno = mobedit.getText().toString();

            RegDb reg = new RegDb(Register.this);
            reg.open();
            String returnedUn = reg.getUn(username);
            reg.close();

            if (username.isEmpty()) {
                unedit.setError("Username is required");
                // return;
            }
            if (password.isEmpty()) {
                passedit.setError("Password is required");
                // return;
            }
            if (conpassword.isEmpty()) {
                conpassedit.setError("Password confirmation is required");
                // return;
            }
            if (name.isEmpty()) {
                nameedit.setError("Name is required");
                // return;
            }
            if (email.isEmpty()) {
                emailedit.setError("Email is required");
                // return;
            }
            if (mobileno.isEmpty()) {
                mobedit.setError("Mobile No is required");
                // return;
            }
            if (username.equals(returnedUn)) {
                unedit.setError("Username is already used");
                // return;
            }
            if (!conpassword.equals(password)) {
                passedit.setError("Check your password");
                // return;
            }
            if (!username.isEmpty() && !password.isEmpty()
                    && !name.isEmpty() && !email.isEmpty()
                    && !mobileno.isEmpty() && conpassword.equals(password)
                    && !username.equals(returnedUn)) {
                Dialog d = new Dialog(v.getContext());
                d.setTitle("Account created.");
                d.show();
            } else {
                return;
            }

我也最終使用了try-catch-catch,但是驗證似乎也沒有用。

 boolean created = true;

                try {

                    if (!username.isEmpty() && !password.isEmpty()
                    && !name.isEmpty() && !email.isEmpty()
                    && !mobileno.isEmpty() && conpassword.equals(password)
                    && !username.equals(returnedUn)){
                    RegDb entry = new RegDb(Register.this);
                    entry.open();
                    entry.createEntry(username, password, name, email,
                            mobileno);

                    entry.close();
                }

            } catch (Exception e) {
                created=false;
                Dialog d = new Dialog(v.getContext());
                d.setTitle("Please check your entries.");
                d.show();

            } finally {
                if (created) {
                    Dialog d = new Dialog(v.getContext());
                    d.setTitle("Account created.");

                    Intent i = new Intent(v.getContext(),
                            MainActivity.class);
                    startActivity(i);

                }
            }

請告訴我我做錯了什么以及應該做什么。

首先,您不需要以這種方式聲明final EditText unedit = (EditText) findViewById(R.id.unedit);

您可以在課程級別將其聲明為

private EditText unedit;

現在在onCreate()方法中,使用以下方式進行訪問:

unedit = (EditText) findViewById(R.id.unedit);

並按如下所示檢查字符串變量,

String username = unedit.getText().toString().trim();  // Add Trim() method

if (username.equals("")) {
                unedit.setError("Username is required");
                // return;
            }

其他所有都一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM