Android setError(“error”) not working in Textview

前端 未结 4 365
醉酒成梦
醉酒成梦 2020-12-09 08:30

We can set error in Edittext successfully but failed to set in textview. is there any problem?? i tried

((TextView) findViewById(R.id.df)).requestFocus();
((         


        
相关标签:
4条回答
  • 2020-12-09 08:32

    Snippet: you have to requestFocus(); a view to show the error.

        // 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();
        }
        });
    }
    
    0 讨论(0)
  • 2020-12-09 08:35

    Actually , you can use the setError for the textView and show its popup .

    You just need to use the same style as of the EditText .

    Simply add the next attribute for the textView in the xml :

    style="@android:style/Widget.EditText"
    
    0 讨论(0)
  • 2020-12-09 08:55

    This is the only you need to get expected setError behaviour on the TextView

    android:focusable="true"
    android:clickable="true"
    android:focusableInTouchMode="true"
    
    0 讨论(0)
  • 2020-12-09 08:56

    Default TextView is NOT focusable. So, you need to set android:focusable="true" and 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" />
    

    And no need to set setSelected(true).

    ((TextView) findViewById(R.id.df)).requestFocus();
    ((TextView) findViewById(R.id.df)).setError("akjshbd");
    
    0 讨论(0)
提交回复
热议问题