Articles of textwatcher

如何在EditText上应用Textchange事件

我开发了一个简单的应用程序,如减法,添加。 在这个应用程序中,我使用三个EditTexts,一个用于回答,另外两个用于提问。 我想计算文本更改事件的问题答案。 但是当我在这两个上应用文本更改事件时,事件发生但不正常工作。 因为当我在问题的第一个EditText中输入文本时事件发生但它抛出此exception: 07-03 16:39:48.844: E/EduApp Log :=>(12537): Error In Text change Event java.lang.NumberFormatException: unable to parse ” as integer 我该怎么办? 我使用TextWatcher进行文本更改事件。 txtOne.addTextChangedListener(this); txtTwo.addTextChangedListener(this); public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) {}

实现相同接口的接口内的内部类,我们通过这个实现了什么?

我的问题: 我正在查看TextWatcher的源代码,我没有在这里得到这个概念。 扩展到NoCopySpan有什么意义? TextWatcher.java: public interface TextWatcher extends NoCopySpan { public void beforeTextChanged(CharSequence s, int start, int count, int after); public void onTextChanged(CharSequence s, int start, int before, int count); public void afterTextChanged(Editable s); } NoCopySpan.java: package android.text; /** * This interface should be added to a span object that should not be copied into […]

TextWatcher的onTextChanged,beforeTextChanged和afterTextChanged之间的差异

在我的Android项目中,我不得不将TextChangedListener (TextWatcher)添加到编辑文本视图中。 其中有三个部分。 onTextChanged beforeTextChanged afterTextChanged 这三者有什么不同。 我不得不在关键的lisner上实现一个表的搜索,对于我的情况,这三个看起来都是一样的。 他们也运作相同。 当我输入产品名称的一部分时,表格会重新绘制,只包含那些包含输入文本的产品。 但我使用了afterTextChanged部分。 我的代码是 EditProduct.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub // System.out.println(“onTextChanged”+s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub // System.out.println(“beforeTextChanged”+s); } […]

TextWatcher事件被多次触发

我对TextWatcher有一个恼人的问题。 我一直在网上搜索,但找不到任何东西。 感谢有人可以帮助我。 由于某种原因, 在一次文本更改时对TextWatcher事件的调用是不稳定的。 有时它们会被触发一次(就像它们应该的那样),有时是两次,有时是3次。 不知道为什么,整件事情非常直截了当。 有时候,afterTextChanged()上的Editable参数会返回toString()和length()中的空值。 代码如下: private TextWatcher mSearchAddressTextChangeListener = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable searchedAddress) { System.out.println(“called multiple times.”); } }; 在afterTextChanged() (和AsyncTask […]

在Android中使用千位分隔符(,)键入时如何格式化EditText的input?

我有一个edittext ,它只能得到没有十进制数字的数字。 android:inputType="number" 我打字的时候要分开数千个。 例如25,000。 我知道我应该使用TextWatcher ,我已经使用这个代码,但我不能让它工作: @Override public void afterTextChanged(Editable viewss) { String s = null; try { // The comma in the format specifier does the trick s = String.format("%,d", Long.parseLong(viewss.toString())); } catch (NumberFormatException e) { } } 你能帮我这么做吗?

使用TextWatcher进行EditTextvalidation

我有一个EditText和一个button的对话框。 这个EditText将命名我将创build的数据库表,所以它的validation是至关重要的。 所以我想提出两个问题: 1)这很简单,但我无法在任何地方find它:数据库表名可以接受哪些字符? 它可以接受数字吗? 而且可以成为第一个字符吗? 2)我设法使用TextWtachervalidationEditText 。 代码如下: et_name.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { String filtered_str = s.toString(); if (filtered_str.matches(".*[^az^0-9].*")) { filtered_str = filtered_str.replaceAll("[^az^0-9]", ""); s.clear(); // s.insert(0, filtered_str); Toast.makeText(context, "Only lowercase letters and numbers are allowed!", Toast.LENGTH_SHORT).show(); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public […]

如果用户按下空格,如何从edittext立即删除空格?

我有一个edittext,还有一个看着SPACE是否到达的textwatcher。 如果它是一个空格,我想立即删除它。 或者,如果它的空间我想确保它不出现,但以某种方式表示(seterror,吐司)为用户的空间是不允许的。 edittext.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { //—// } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) {} }); 我无法在afterTextChaned方法中定义onkeydown,因为它给了我一个错误。 public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); if (keyCode == KeyEvent.KEYCODE_SPACE) { } } 所以它不工作(语法错误,错误的int keyCode […]

如何在Android应用程序中使用AsYouTypeFormatter TextWatcher?

我正在尝试使用Google的libphonenumber中的AsYouTypeFormatter和TextWatcher,我不确定是否有可能。 我已经能够格式化从EditText字段input文本,并在另一个EditText输出,但不能直接更改原始EditText字段(这是我想要的)。 我知道phoneNumberFormattingTextWatcher,但是我们希望用户能够最终select它们所在的区域,并且比使用允许的更多的控制(从我所收集的)。 上课: private View phoneNumberView; private EditText phoneNumberText; private String formattedPhoneNumber; private boolean isInAfterTextChanged; private AsYouTypeFormatter aytf; 首先我在我的类的顶部初始化AsYouTypeFormatter: aytf = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(Locale.getDefault().getCountry()); 在创build了我的选项卡之后,我创build一个EditText框,格式化其中的现有电话号码(工作),并附加侦听器(它是当前类): phoneNumberView = inflater.inflate(R.layout.phone_number_setting, null); phoneNumberText = (EditText) phoneNumberView.findViewById(R.id.dirty_phone_number); phoneNumberText.setText(dirtyPhoneNumber); for (int i = 0; i < dirtyPhoneNumber.length(); i++){ phoneNumberText.setText(aytf.inputDigit(dirtyPhoneNumber.charAt(i))); } aytf.clear(); phoneNumberText.setText(dirtyPhoneNumber); phoneNumberText.addTextChangedListener(this); 那么这就是我现在在TextWatcher函数中所具有的function,我不确定我的代码应该在哪个函数中: @Override public void afterTextChanged(Editable s) { if […]

如何在Android上使用TextWatcher处理Enter键

我正在使用Android。 以前我用onKeyListener来处理关键事件的特定操作。 然而,这种方式似乎不能解决我的问题,因为几乎所有的关键将获得禁用一旦我已经实现了侦听器到我的EditText 。 在阅读了一些主题后,我知道我应该使用TextWatcher代替,但我仍然想知道如何处理ENTER键内部,因为提供的参数只有CharSequence , Editable等,我没有find任何keyCode参数。

如何更改DataChange上的TextView文本而不调用TextWatcher监听器

TextView textView=new TextView(context); textView.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { s.append("A"); } }); 如果我们添加一个TextWatcher到一个TextView ,并且我想追加一个字母到这个TextView ,每次用户在其中写入一个字母,但是这个不停地重新调用TextWatcher Listener,所以就发生了StackOverFlow error ,所以如何附加一个文本而不用重新调用TextWatcher Listener?