EditText के फोकस को संभालने के लिए घटना


145

क्या कोई मुझे किसी भी घटना से संबंधित सुझाव दे सकता है EditText? मेरे आवेदन में एक है EditText, जो इसमें एक URL स्वीकार करता है।

अब मेरी समस्या यह है कि उपयोगकर्ता द्वारा फ़ील्ड में URL दर्ज करने के बाद और आगे बढ़ें, बिना किसी क्लिक किए घटना, यानी जब फ़ोकस से आगे बढ़ेंगे EditText, तो उसे दर्ज किए गए यूआरएल का पता लगाना चाहिए और सर्वर पर जाना चाहिए।

अगर मुझे Json Parsing का उपयोग करके उत्तर मिलता है, तो यह अधिक सुविधाजनक होगा।

जवाबों:


519

यहाँ फोकस श्रोता उदाहरण है।

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});

फ़ोकस चेंज श्रोता के अंदर के टुकड़े में मैं अपने UI, किसी भी विचार को अपडेट करने में असमर्थ हूं?
मूवडे

2
यह काम नहीं करता। यदि कीबोर्ड कुछ उपकरणों पर "दर्ज करें" या कीबोर्ड बटन छिपा रहा है, तो "फ़ोकस फोकस" को निकाल नहीं दिया जाएगा। यदि आप फिर से टेक्स्ट को संपादित करने पर ध्यान केंद्रित करते हैं, तो यह "फोकस" नहीं मिला।
स्नो वुल्फ

1
ध्यान रखें कि यदि आपके पास सॉफ्ट कीबोर्ड प्रदर्शित होने पर आकार बदलने के लिए आपका लेआउट सेट है, या TextWatcher का उपयोग करके कुछ यूआई-संबंधित करते हैं, तो श्रोता को बहुत कुछ कहा जा सकता है - टाइप किए गए प्रत्येक वर्ण के लिए दो बार भी! stackoverflow.com/questions/14727248/…
M_M

12
  1. कक्षा के शीर्ष पर EditText की वस्तु घोषित करें:

     EditText myEditText;
  2. OnTreate फंक्शन में EditText खोजें और EditText का सेटऑनफोकसचेंज लाइटर:

    myEditText = findViewById(R.id.yourEditTextNameInxml); 
    
    myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if (!hasFocus) {
                         Toast.makeText(this, "Focus Lose", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, "Get Focus", Toast.LENGTH_SHORT).show();
                    }
    
                }
            });

यह बढ़िया काम करता है।


11

जब कोटलिन में यह इस तरह दिखेगा:

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }

4

हममें से जो इस वैध समाधान के ऊपर काम नहीं करते, उनके लिए यहां एक और समाधान है

 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            if(!isFocused)
            {
                Toast.makeText(MainActivity.this,"not focused",Toast.LENGTH_SHORT).show();

            }
        }
    });

यह काम किया है, लेकिन मुझे समझ में नहीं आया ऊपर समाधान मेरे लिए काम नहीं किया
श्रुति अय्यर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.