0

これが簡単に修正されることを願っています。ここで何が欠けているのかわかりません。これはログイン フォームで、以前のログイン メールを共有設定で記憶しています。editText ボックスには、onCreate で電子メールが事前入力されていますが、onClick は editText フィールドが空であると認識しています。何か案は?

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    setContentView(R.layout.main);

    email = (EditText) findViewById(R.id.login_email_address);
    pass = (EditText) findViewById(R.id.password);

    login = (Button) findViewById(R.id.blogin);
    text = (TextView) findViewById(R.id.invalid_email);


    // register listeners
    newuser.setOnClickListener(this);
    login.setOnClickListener(this);
    app_preferences = PreferenceManager.getDefaultSharedPreferences(this);

    String restoredemail = app_preferences.getString("username", null);
    if (restoredemail != null) {
        email.setText(restoredemail);

    email.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            if (email.getText().toString()
                    .matches("[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+")
                    && s.length() > 0) {
                text.setText("valid email");
                valid_email = true;
                //user_email = email.toString();
            } else {
                text.setText("invalid email");
            }
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        }
    });
}

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.blogin:
        if (valid_email == true) {
            new AttemptLogin().execute();   
        }else{
4

1 に答える 1

1

わかった。

送信する前に、有効な電子メールが入力されているかどうかを確認する addTextChangedListener があります。テキストが変更されていない (入力されている) ため、登録されていませんでした。これがいつか誰かに役立つかどうかはわかりませんが、ここに改訂されたコードがあります。これについてヘルプを投稿してくれたすべての人に感謝します。

String restoredemail = app_preferences.getString("username", null);
    if (restoredemail != null) {
        email.setText(restoredemail);
        valid_email = true;
        text.setText("valid email");
    }else{  

        email.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            if (email.getText().toString()
                    .matches("[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+")
                    && s.length() > 0) {
                text.setText("valid email");
                valid_email = true;
                //user_email = email.toString();
            } else {
                text.setText("invalid email");
            }
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        }
    });
}

}
于 2013-08-29T22:26:26.233 に答える