2012-11-22 31 views
20

में काम नहीं कर रहा है हम एडिटक्स्ट में सफलतापूर्वक त्रुटि सेट कर सकते हैं लेकिन टेक्स्टव्यू में सेट करने में विफल रहे। कोई दिक़्क़त है क्या?? मैंएंड्रॉइड सेट एरर ("त्रुटि") टेक्स्टव्यू

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

की कोशिश की, लेकिन मैं त्रुटि के लिए पॉपअप नहीं मिल रहा है।

Textview Error

+0

पॉपअप EditText –

+0

@Anis के लिए किया जाता है, इस http://developer.android.com/reference में लिखा है पर setError व्यवहार करने के लिए की जरूरत है /android/widget/TextView.html, जो setError (CharSequence त्रुटि): टेक्स्टव्यू के दाएं हाथ के यौगिक को "त्रुटि" आइकन पर खींचने के लिए सेट करता है और एक त्रुटि संदेश सेट करता है जो टेक्स्टव्यू पर ध्यान केंद्रित करते समय पॉपअप में प्रदर्शित किया जाएगा । –

उत्तर

29

वास्तव में, आप टेक्स्ट व्यू के लिए setError का उपयोग कर सकते हैं और इसकी पॉपअप दिखा सकते हैं।

आपको केवल संपादन शैली के समान शैली का उपयोग करने की आवश्यकता है।

बस XML में TextView के लिए अगले विशेषता जोड़ें:

style="@android:style/Widget.EditText" 
+4

[nayoga0 का उत्तर] (http://stackoverflow.com/a/15954372/2209946) इससे कहीं बेहतर है। –

+0

@ डेविड लॉर्ड किस तरह से? –

5

स्निपेट: आप 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(); 
    } 
    }); 
} 
+1

संपादित करेंext.requestFocus(); संपादित करेंext.setError ("जो कुछ भी"); – Maragues

68

डिफ़ॉल्ट TextView फ़ोकस करने योग्य नहीं है। तो, आपको एंड्रॉइड सेट करने की आवश्यकता है: फोकस करने योग्य = "सत्य" और एंड्रॉइड: फोकस करने योग्य इंटचोडोड = "सत्य"

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:text="@string/hello_world" /> 

और सेट सेट (सेट) सेट करने की कोई आवश्यकता नहीं है।

((TextView) findViewById(R.id.df)).requestFocus(); 
((TextView) findViewById(R.id.df)).setError("akjshbd"); 
+2

मैं इस समाधान को पसंद करता हूं। स्टाइल को @android पर सेट करना: शैली/विजेट। एडिटटाक्स्ट ओवरकिल है और टेक्स्ट व्यू को एडिटटेक्स्ट की तरह दिखता है। – starkej2

+3

यह समाधान स्वीकृत उत्तर से अधिक साफ है। – Ridcully

+0

यह एक बेहतर समाधान है, इसमें कोई संदेह नहीं है – Gonzalo

10

यह केवल आप की उम्मीद TextView

android:focusable="true" 
android:clickable="true" 
android:focusableInTouchMode="true" 
+0

यह उत्तर भी काम करता है। यह सब के बीच सबसे सरल है। धन्यवाद –

+1

सरल विचार, और यह दिखाता है कि उस कष्टप्रद संपादन टेक्स्ट शैली नहीं है! – Choletski

+0

लेकिन यह टेक्स्टव्यू के क्लिक पर कीबोर्ड भी खुलता है – seema