Edittextでエラーを設定できましたが、textviewで設定できませんでした。何か問題ある??私は試した
((TextView) findViewById(R.id.df)).requestFocus();
((TextView) findViewById(R.id.df)).setSelected(true);
((TextView) findViewById(R.id.df)).setError("akjshbd");
しかし、エラーのポップアップは表示されません。
実際には、textViewにsetErrorを使用してポップアップを表示できます。
EditTextと同じスタイルを使用するだけです。
XmlのtextViewに次の属性を追加するだけです:
style="@Android:style/Widget.EditText"
デフォルトのTextViewはフォーカス可能ではありません。したがって、Android:focusable = "true"およびAndroid:focusableInTouchMode = "true"を設定する必要があります。
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:text="@string/hello_world" />
また、setSelected(true)を設定する必要はありません。
((TextView) findViewById(R.id.df)).requestFocus();
((TextView) findViewById(R.id.df)).setError("akjshbd");
TextViewで予想されるsetError動作を取得する必要があるのはこれだけです
Android:focusable="true"
Android:clickable="true"
Android:focusableInTouchMode="true"
スニペット:requestFocus();する必要がありますエラーを表示するビュー。
// Check for a valid email address.
if (TextUtils.isEmpty(mEmail)) {
mEmailView.setError(getString(R.string.error_field_required));
focusView = mEmailView;
cancel = true;
} else if (!mEmail.contains("@")) {
mEmailView.setError(getString(R.string.error_invalid_email));
focusView = mEmailView;
cancel = true;
}
if (cancel) {
// There was an error; don't attempt login and focus the first
// form field with an error.
focusView.requestFocus();
} else {
// Show a progress spinner, and kick off a background task to
// perform the user login attempt.
// showProgress(true);
// mAuthTask = new UserLoginTask();
// mAuthTask.execute((Void) null);
ParseUser.logInInBackground(mEmail, mPassword, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
finishAndStartCardActivity();
}
});
}