2013-01-22 13 views
5

मैं संपादन टेक्स्ट बॉक्स के लिए न्यूनतम और अधिकतम इनपुट मान सेट करना चाहता हूं। मैं EditText के लिए एक सरल सत्यापन बना रहा हूं; यह न्यूनतम 5 और अधिकतम 8 वर्ण वाले ए-जेड और 0-9 मान लेता है।एंड्रॉइड में संपादन टेक्स्ट में न्यूनतम और अधिकतम वर्ण सीमा कैसे सेट करें?

<EditText 
     android:id="@+id/edittextKode_Listing" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="5dp" 
     android:layout_marginLeft="5dp" 
     android:layout_alignTop="@+id/textKode_listing" 
     android:layout_toRightOf="@+id/textKode_listing" 
     android:maxLength="8" 
     android:inputType="textCapCharacters" 
     android:digits="0,1,2,3,4,5,6,7,8,9,ABCDEFGHIJKLMNOPQRSTVUWXYZ" 
     /> 

लेकिन न्यूनतम मूल्य आवश्यकता सेट करने में सक्षम नहीं:

मैं इस प्रकार अधिकतम और अन्य सत्यापन निर्धारित किया है। मेरा संपादन टेक्स्ट बॉक्स एक चेतावनी संवाद में है। मैंने समस्या को हल करने के लिए निम्न कोड का प्रयास किया:

private void openInboxDialog() { 

     LayoutInflater inflater = this.getLayoutInflater(); 
     // declare dialog view 
     final View dialogView = inflater.inflate(R.layout.kirim_layout, null); 

     final EditText edittextKode = (EditText) dialogView.findViewById(R.id.edittextKode_Listing); 
     final EditText edittextalamat = (EditText) dialogView.findViewById(R.id.edittextAlamat); 
     edittextKode.setOnFocusChangeListener(new OnFocusChangeListener() { 

      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       // TODO Auto-generated method stub 

       if(edittextKode.getText().toString().length() > 0){ 
        if(edittextKode.getText().toString().length() < 5) 
        { 
         edittextKode.setError("Error"); 
         Toast.makeText(GPSActivity.this, "Kode listing value not be less than 5", Toast.LENGTH_SHORT).show(); 
         edittextKode.requestFocus(); 

        } 
       } 
      } 
     }); 
     final AlertDialog.Builder builder = new AlertDialog.Builder(GPSActivity.this); 
     builder.setTitle("Kirim").setView(dialogView) 
       .setNeutralButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // TODO Auto-generated method stub 
         gpsCoordinates = (TextView) findViewById(R.id.text_GPS_Coordinates); 
         kode = edittextKode.getText().toString(); 
         alamat = edittextalamat.getText().toString(); 
         catatan = edittextcatatan.getText().toString(); 
         pengirim = edittextPengirim.getText().toString(); 
         if (kode.length() > 0 && alamat.length() > 0 
           && catatan.length() > 0 && pengirim.length() > 0) { 
          message = "Kode listing : " + kode + "\nAlamat : " 
            + alamat + " \nCatatan : " + catatan + " \n Pengirim : " + pengirim 
            + "\nKoordinat GPS : " 
            + gpsCoordinates.getText().toString(); 
           sendByGmail(); 
         } else { 
          Toast.makeText(
            getApplicationContext(), 
            "Please fill all three fields to send mail", 
            Toast.LENGTH_LONG).show(); 
         } 
        } 
       }); 
     builder.create(); 
     builder.show(); 
    }` 

इस चेतावनी संवाद में, मेरे पास दो संपादन टेक्स्ट बॉक्स हैं। मैं अपने सत्यापन को पहले संपादन टेक्स्ट पर लागू करना चाहता हूं। मैंने फोकस परिवर्तन पर इसकी न्यूनतम लंबाई की जांच करने के लिए setOnFocusChangeListener कहा। यदि लंबाई 5 से कम है तो फोकस के लिए अनुरोध किया गया है, लेकिन यह अभी भी दूसरे संपादन टेक्स्ट बॉक्स में टाइप है।

क्या कोई मेरी मदद कर सकता है।

उत्तर

-1

ऐसा करने का कोई सीधा तरीका नहीं है, जहां तक ​​मुझे पता है, जब संपादन टेक्स्ट फोकस खो देता है या जब उपयोगकर्ता जानकारी जमा करता है तो आप लंबाई की जांच करते हैं और देखते हैं कि इससे कम 5 अक्षर, उदाहरण के लिए

if (myTextBox.length() < 5) 
{ 
Log.d("APP", "Sorry, you need to enter at least 5 characters"; 
} 
else 
{ 
Log.d("APP", "Input valid"); 
} 
+0

या मैं कोशिश करता हूं कि आप इसे मेरे कोड पर देख सकते हैं जब मैं दूसरे संपादन पर क्लिक करता हूं तो कर्सर पहले एडिटेक्स्ट पर नहीं जाएगा – nishitpatel

+0

क्षमा करें मुझे याद आया, वह नहीं देख सकता कि यह फोकस का अनुरोध क्यों नहीं करेगा फिर भी टेक्स्ट बॉक्स पर, मैं सोच रहा हूं कि .setError() के साथ कुछ करने के लिए कुछ है, यह बाहर ले जा सकता है और फिर से परीक्षण कर सकता है और देख सकता है कि फोकस आपके उत्तर के लिए – Boardy

+0

thanx काम करता है या नहीं .setError() लेकिन यह अभी भी अगले edittext – nishitpatel

-2

आप इस तरह की तरह कुछ कर सकते हैं .... इस में मैं वर्ण की जाँच की और अगर यह एक से अधिक तो 5 editText कि यह फोकस हो जाता है वापस पर टच करने के बाद focus..and खो देता है इस ..i आशा है कि यह तुम्हारी मदद करेगा ..

edittextKode.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
      // TODO Auto-generated method stub 
      if(arg0.length()>5) 
      { 
       Toast.makeText(getApplicationContect(),"Max.value is 5",1).show(); 
        edittextKode.setFocusable(false); 
      } 

     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 

edittextKode.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View arg0, MotionEvent arg1) 
     { 
      // TODO Auto-generated method stub 
      edittextKode.setFocusableInTouchMode(true); 
      return false; 
     } 
    }); 
-3

आप श्रोता के अंदर कोड के नीचे की कोशिश कर सकते ..Try:

तो शर्त पूरी नहीं है,

edittextKode.setFocus(true) ; 
edittextKode.setFocusableInTouchMode(true) ; 
edittextalamat.setFocus(false) ; 
edittextalamat.setFocusableInTouchuha(false) ; 
edittextKode.requestFocus(); 
0
InputFilter[] lengthFilter = new InputFilter[1]; 
lengthFilter[0] = new InputFilter.LengthFilter(9); //Filter to 9 characters 
mEditText.setFilters(lengthFilter); 

यह वर्णों की संख्या को सीमित करने के लिए एक फ़िल्टर बनाता है।

+0

यह अधिकतम लंबाई, न्यूनतम नहीं है। इसके अलावा, केवल एपीआई 23+ के लिए है। –

संबंधित मुद्दे