web-dev-qa-db-ja.com

Android setError( "error")TextViewで動作していません

Edittextでエラーを設定できましたが、textviewで設定できませんでした。何か問題ある??私は試した

((TextView) findViewById(R.id.df)).requestFocus();
((TextView) findViewById(R.id.df)).setSelected(true);
((TextView) findViewById(R.id.df)).setError("akjshbd");

しかし、エラーのポップアップは表示されません。

Textview Error

29
Bhavesh Hirpara

実際には、textViewにsetErrorを使用してポップアップを表示できます。

EditTextと同じスタイルを使用するだけです。

XmlのtextViewに次の属性を追加するだけです:

style="@Android:style/Widget.EditText"
35

デフォルトの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");
92
nagoya0

TextViewで予想されるsetError動作を取得する必要があるのはこれだけです

Android:focusable="true"
Android:clickable="true"
Android:focusableInTouchMode="true"
12
cesards

スニペット: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();
    }
    });
}
5
Philippe David