Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7413341
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T06:40:49+00:00 2026-05-29T06:40:49+00:00

I’m trying to filter the input char of an EditText to allow only valid

  • 0

I’m trying to filter the input char of an EditText to allow only valid float value. (e.g. :”12,45″, only one comma, …).

For this, I use the KeyListener (dont confuse with onKeyListener or textChangeListener. I want to prevent the user from entering invalid data).

On Android 2.3.6 and 3.2 the keyListener.filter() and keyListener.getAcceptedChars() are not called and I can introduce any char (not limited to .getAcceptedChars())

I found little documentations about keyListener. If you got a good example or doc, I’m very interested.

Any clue why this is not working ?

What did I do wrong ?

Activity Code sample:

    @Override

    protected void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(...);

        setContentView(R.layout.editTextTest_lyt);

...

 mEditTextTest = (EditText) findViewById(R.id.editTextTest);

mEditTextTest.setKeyListener(new NumberCommaDecimalKeyListenerTest());

...}

Layout Code sample:

editTextTest_lyt.xml:
            <EditText
                android:id="@+id/editTextTest"
                android:layout_height="fill_parent"
                android:layout_width="fill_parent"
                android:layout_weight="1"
                android:inputType="numberSigned|numberDecimal"
                android:ems="5"
                android:maxLength="9"
                android:maxLines="1"
                android:gravity="right|center_vertical"
                android:imeOptions="actionNext"/>

KeyListener Code sample:

public class NumberCommaDecimalKeyListenerTest extends NumberKeyListener {

private static final char[] mAccepted = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', ',' };
    private static final boolean    mSign = true;
    private static final boolean    mDecimal = true;

    @Override

    protected char[] getAcceptedChars()
    {
      Log.e("LODA", "KeylistenerTest.getAcceptedChars()"); // DONT show up in logs 
        return mAccepted;
    }

    public NumberCommaDecimalKeyListenerTest()
    { super();
  Log.e("LODA", "CREATE KeylistenerTest"); // show up in logs 
    }

    @Override
    public int getInputType()
    {
    Log.e("LODA", "KeylistenerTest.getInputType()"); // show up in logs 
        int contentType = InputType.TYPE_CLASS_NUMBER;
        if (mSign)
        {
            contentType |= InputType.TYPE_NUMBER_FLAG_SIGNED;
        }
        if (mDecimal)
        {
            contentType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
        }
        return contentType;
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
    {
    Log.e("LODA", "enter KeylistenerTest.filter"); // DONT show up in logs 

        // My logic will go here...

        // if user pressed '.', is changed for ','
        source = source.toString().replace(".", ",");
        source = source.toString().replace("6", "9");

        CharSequence out = super.filter(source, start, end, dest, dstart, dend);

        return out;
    }

}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T06:40:50+00:00Added an answer on May 29, 2026 at 6:40 am

    Looking at the Android docs they state in relation to KeyListener that:

    Note that for most cases this interface has been superceded by general
    soft input methods as defined by InputMethod; it should only be used
    for cases where an application has its own on-screen keypad and also
    wants to process hard keyboard events to match it

    And for the method getInputType():

    If you return TYPE_NULL then no soft keyboard will provided. In other
    words, you must be providing your own key pad for on-screen input and
    the key listener will be used to handle input from a hard keyboard.

    If you return any other value, a soft input method will be created
    when the user puts focus in the editor, which will provide a keypad
    and also consume hard key events. This means that the key listener
    will generally not be used, instead the soft input method will take
    care of managing key input as per the content type returned here.

    So because you return a content type the KeyListener is ignored. Looks like this isn’t possible then or did you find a work around?

    Perhaps you could create a custom TextWatcher instead and then set this on the EditText using EditText.addTextChangedListener(TextWatcher textWatcher).?

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to understand how to use SyndicationItem to display feed which is
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I want use html5's new tag to play a wav file (currently only supported
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I'm trying to use string.replace('’','') to replace the dreaded weird single-quote character: ’ (aka
Basically, what I'm trying to create is a page of div tags, each has
link Im having trouble converting the html entites into html characters, (&# 8217;) i
For some reason, after submitting a string like this Jack’s Spindle from a text
this is what i have right now Drawing an RSS feed into the php,
I am reading a book about Javascript and jQuery and using one of the

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.