0

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-finally も使用しましたが、検証も機能していないようです。

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

                }
            }

私が間違っていることと、何をすべきかを教えてください。

4

1 に答える 1

0

まず、このように宣言する必要はありません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;
            }

他のすべてについても同じです。

于 2013-03-29T12:42:33.667 に答える