标签: textwatcher

Android拦截在editText上粘贴\ copy\cut

我该如何拦截这类事件?

我需要添加一些逻辑,当用户试图粘贴一些文本到我EditText知道我可以使用TextWatcher但这个入口点对我不好,因为我只需要拦截粘贴的情况下,而不是每次用户按我的EditText,

android textview textwatcher android-edittext

34
推荐指数
2
解决办法
2万
查看次数

如何在EditText上应用Textchange事件

我开发了一个简单的应用程序,如减法,添加.在这个应用程序中,我使用三个EditTexts,一个用于回答,另外两个用于提问.我想计算文本更改事件的问题答案.但是当我对这两个应用文本更改事件时,事件发生但不正常工作.因为当我在问题的第一个EditText中输入文本时事件发生但它抛出此异常:

07-03 16:39:48.844: E/EduApp Log :=>(12537): Error In Text change Event java.lang.NumberFormatException: unable to parse '' as integer
Run Code Online (Sandbox Code Playgroud)

我该怎么办?我使用TextWatcherfor text change事件.

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) {}  
Run Code Online (Sandbox Code Playgroud)

android textwatcher android-edittext

26
推荐指数
1
解决办法
6万
查看次数

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

我的问题:

我正在查看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);
}
Run Code Online (Sandbox Code Playgroud)

NoCopySpan.java:

package android.text;

/**
 * This interface should be added to a span object that should not be copied into a new Spanned when performing a slice or copy operation on the original Spanned it was placed in.
 */
public interface NoCopySpan {
    /**
     * Convenience …
Run Code Online (Sandbox Code Playgroud)

java android textwatcher

23
推荐指数
1
解决办法
439
查看次数

为EditText实现Text Watcher

我有一个EditText.当我点击它时,它变得可聚焦.我将输入要输入EditText的输入文本.我想为EditText实现一个监听器,这样当我停止输入时,它应该自动将该文本保存到数据库中而不是一个按钮.如何让EditText的监听器听取是否停止输入?

android textwatcher android-edittext

16
推荐指数
3
解决办法
3万
查看次数

如何在TextWatcher方法上下文中获取视图?

我有一个处理程序是一个TextWatcher,我不知道如何获得View更改文本.

这是我的处理程序:

TextWatcher handler = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        oldText = s.toString();
    }

    @Override
    public void afterTextChanged(Editable s) {
        //v.setText("afterTextChanged");
    }
};
Run Code Online (Sandbox Code Playgroud)

请注意注释部分,这是我想要的,ViewEditText触发事件的那个开始,在文本更改后更改文本.

我如何.setText()afterTextChanged事件中达到此方法?(就像查看的onClick事件一样v)

events android listener textwatcher android-edittext

15
推荐指数
1
解决办法
7017
查看次数

android EditText,键盘textWatcher问题

我正在开发一个Android应用程序,我有一个EditText,用户可以输入数字.我想使用不同的货币格式(比如##,##,###)来格式化数字,我想在运行中进行,即当用户输入每个数字时(而不是按下输入时).我google了一下,遇到了TextWatcher,我首先发现它很有希望,但结果却是一种绝对的痛苦.我正在HTC Desire手机上调试我的代码,它只有一个软键盘.

现在我想在用户按下数字(0到9),del(退格)键并输入密钥时收到回调.从我的测试中我发现了这些(至少在我的手机上)

1)当用户按del或输入键时,将调用editText onKeyListener.当用户按下回车键时,一次输入会调用onKey函数两次(我认为是ACTION_UP和ACTION_DOWN).当用户按下del时,onKey被调用一次(仅适用于ACTION_DOWN),我不知道为什么.用户按下任何数字(0到9)时都不会调用onKey,我也无法理解.

2)每当用户按任意数字(0到9)键时,都会调用TextWatchers 3个回调函数(beforeTextChanged,onTextChanged,afterTextChanged).所以我想通过一起使用TextWatcher和onKeyListener,我可以得到我需要的所有回调.

现在我的问题是这些......

1)首先在我的HTC软键盘上有一个键(带有向下箭头的键盘符号),当我点击它时键盘被重新签名而不给出任何回调.我仍然不能相信Android让用户编辑一个字段并辞职而不让程序处理(保存)编辑.现在我的editText显示一个值,我的对象有另一个值(我在输入时保存用户编辑,并通过使用对象中的值重置editText值来处理键盘按键,但我没有回答此键盘向下键) .

2)其次,我想在用户输入新数字后格式化数字.假设我在editText上已有123并且用户输入了按4,我希望我的editText显示1,234.我得到onTextChanged()和afterTextChanged()的完整数字,我可以格式化数字并将其放回到任何这些回调中的editText.我应该使用哪一个?哪种是最佳做法?

3)第三个是最关键的问题.当应用程序启动时,我将当前对象值放在editText中.假设我把123放在onResume()上,当用户输入一个数字(比如说4)时,我希望它是1234.但是在我的onTextChanged回调中我得到的是4123.当我再按一个键(比如5)我是得到45123.因此对于用户输入,editText光标指向文本的结尾.但是当手动设置值时,editText光标似乎不会更新.我相信我必须在textWatcher回调中做一些事情,但我不知道该怎么办.

我在下面发布我的代码.

public class AppHome extends AppBaseActivity {
    private EditText ed = null;
    private NumberFormat amountFormatter = null;
    private boolean  isUserInput = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.app_home_screen);

        ed = (EditText)findViewById(R.id.main_amount_textfield);
        amountFormatter = new DecimalFormat("##,##,###");


        ed.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(event.getAction() == KeyEvent.ACTION_DOWN) 
                    return true;
                String strippedAmount = ed.getText().toString().replace(",", "");
                if(keyCode == KeyEvent.KEYCODE_DEL){
                    //delete pressed, strip …
Run Code Online (Sandbox Code Playgroud)

android formatter textwatcher android-edittext

14
推荐指数
1
解决办法
2万
查看次数

Android - 在EditText中更改*文本后执行某些操作*

我构建了一个Android应用程序.我有一个EditText.我想在用户更改文本后自动保存更改(或其他任何内容).现在我用

editText.addTextChangedListener(textWatcher);
Run Code Online (Sandbox Code Playgroud)

  TextWatcher textWatcher = new TextWatcher() {
    public void afterTextChanged(Editable s) {
     ...
    }
Run Code Online (Sandbox Code Playgroud)

但是它会在每次微小的更改后保存更改(添加\删除一个字母),我希望它只在用户完成后才能保存(关闭键盘,点击不同的编辑文本等).我怎样才能做到这一点?

android textwatcher android-edittext

14
推荐指数
2
解决办法
2万
查看次数

如何在Android App中使用AsYouTypeFormatter TextWatcher?

我正在尝试使用来自Google的libphonenumber的AsYouTypeFormatter和TextWatcher,我不确定它是否可行.我已经能够将文本格式化为从EditText字段输入并将其输出到另一个EditText但不能直接更改原始的EditText字段(这就是我想要的).我知道phoneNumberFormattingTextWatcher,但我们希望用户能够最终选择他们所在的区域设置,并且比使用允许的区域具有更多的控制权(从我收集的内容).

顶级:

private View phoneNumberView;
private EditText phoneNumberText;
private String formattedPhoneNumber;
private boolean isInAfterTextChanged;
private AsYouTypeFormatter aytf;
Run Code Online (Sandbox Code Playgroud)

首先,我在我的类顶部初始化AsYouTypeFormatter:

aytf = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(Locale.getDefault().getCountry());
Run Code Online (Sandbox Code Playgroud)

在创建了我的标签之后,我创建一个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);
Run Code Online (Sandbox Code Playgroud)

那么这就是我目前在TextWatcher函数中所拥有的,我不确定我的代码中应该包含哪些函数:

@Override
public void afterTextChanged(Editable s) {
    if (!isInAfterTextChanged) {
           isInAfterTextChanged = true;

           if(s.length() > 0){
               Log.v("AsYouTypeFormatter - source", s.toString());
               for(int i = 0; i < s.length(); i++){
                   formattedPhoneNumber = aytf.inputDigit(s.charAt(i));
                   Log.v("AsYouTypeFormatter - formatted", formattedPhoneNumber); …
Run Code Online (Sandbox Code Playgroud)

java android phone-number textwatcher android-edittext

13
推荐指数
2
解决办法
7786
查看次数

TextWatcher的事件被调用两次

在我的应用程序中,我将TextWatcher放在EditText上.当我更改EditText的文本时,TextWatcher的事件被调用两次.

我正在使用模拟器来运行应用程序.

android textwatcher

12
推荐指数
1
解决办法
6999
查看次数

如何只允许EditText中的正数

我有一个TextWatcher,当所有EditTexts length()都是!= 0时启用一个按钮.我现在想要添加能力以确保数字是正数.我尝试在另一个if()中放入一个新的if()来检查是否> 0但是由于某种原因它不起作用.

所以我需要的是确保所有的EditText都不为空,并且输入了正数,然后启用该数字.

这就是我的意思,

    public TextWatcher localWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
    }

    // When the text is edited, I want to check if all textViews are filled
    @Override
    public void afterTextChanged(Editable s) {

        // Check if any of the TextViews are == 0, if so the button remains disabled
        if      (et1local.getText().toString().length() == 0 …
Run Code Online (Sandbox Code Playgroud)

java android textwatcher

12
推荐指数
1
解决办法
1万
查看次数