在什么情况下我应该使用afterTextChanged而不是onTextChanged反之亦然?例子将是最有启发性,注重为什么afterTextChanged必须重写,但onTextChanged并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);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// System.out.println("afterTextChanged"+s);
String new_prx = s.toString();
System.out.println(s);
mini_productList = new ArrayList<Product>();
// mini_productList
int count = 0; …Run Code Online (Sandbox Code Playgroud) 我正在阅读Android编程中的TextWatcher.我无法理解afterTextChanged和onTextChanged之间的区别.
虽然我提到了 TextWatcher的onTextChanged,beforeTextChanged和afterTextChanged之间的差异,但是当我需要使用onTextChanged而不是afterTextChanged时,我仍然无法想到这种情况.
我在EditText上实现TextWatcher,以在用户输入新字符时在文本内查找并加下划线的一系列关键字。但是,当在软键盘上选择建议的/自动完成的单词时,不是将建议的单词添加到Edittext,然后调用onTextChanged函数,将删除一半的完整单词。我发现这很奇怪,因为输入单个字符会激活onTextChanged函数。任何帮助将不胜感激。
PS。如果有人知道即时处理EditText的更好方法,请告诉我。
码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_codify_test);
final EditText editText = (EditText) findViewById(R.id.editText_codifyTest);
editText.addTextChangedListener(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) {
if (!checked) { //stop infinite loop
checked = true;
cursorPosition = editText.getSelectionStart(); //get cursor position before text modification
codifyText(editText);
} else {
checked = false;
}
}
@Override
public void afterTextChanged(Editable s) {
}
}); …Run Code Online (Sandbox Code Playgroud) android textwatcher android-softkeyboard android-edittext android-textwatcher
在我的Android应用程序中,我需要实现一个TextWatcher接口来实现onTextChanged.我遇到的问题是,我想用一些额外的字符串更新相同的EditText.当我尝试这样做时,程序终止.
final EditText ET = (EditText) findViewById(R.id.editText1);
ET.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
try
{
ET.setText("***"+ s.toString());
ET.setSelection(s.length());
}
catch(Exception e)
{
Log.v("State", e.getMessage());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
}
});
Run Code Online (Sandbox Code Playgroud)
我的程序终止,甚至我尝试捕获异常,就像我的代码仍然终止.有谁知道为什么会发生这种情况以及如何实现这一目标?谢谢.
java android textwatcher android-edittext android-textwatcher
每当EditText字符串更改时,onTextChanged都会调用。
现在,当我开始一个新的Activity并通过 发送数据时Bundle,onTextChanged不会被调用。
if( getIntent().getExtras() != null) {
Bundle b = getIntent().getExtras();
int value = -1;
if(b != null)
value = b.getInt("key");
edit1.setText("Mywords:");
}
Run Code Online (Sandbox Code Playgroud)
我怎么称呼它?
我有一个活动,其中包含两个编辑文本,并且TextWatcher该活动中有一个单独实现的活动。我想创建一个实现该编辑文本的TextWatcher类TextWatcher。我该如何执行该代码:-
private TextWatcher getmWatcher = 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) {
}
@Override
public void afterTextChanged(Editable s) {
checkFieldsForEmpty();
}
};
private TextWatcher mWatcher = 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) …Run Code Online (Sandbox Code Playgroud) 我正在使用EditText.当我使用setText()时.TextWatcher事件正在调用.我不需要打电话吗?谁能帮我?
txt_qty.addTextChangedListener(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) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
一切正常: 我想要在电话号码 EditText 中使用的格式 (XXX-XXX-XXXX) 有效。
问题是: 删除字符“-”时,不能删除。我被卡住了。
电话号码TextWatcher.java
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
public class PhoneNumberTextWatcher implements TextWatcher {
private static final String TAG = PhoneNumberTextWatcher.class
.getSimpleName();
private EditText edTxt;
public boolean isDelete;
public PhoneNumberTextWatcher(EditText edTxtPhone) {
this.edTxt = edTxtPhone;
edTxt.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.KEYCODE_DEL) {
isDelete = true;
LogUtils.Log_e("ISDELETE", String.valueOf(isDelete));
}
return false;
}
});
}
l.substring(6, val.length());
} …Run Code Online (Sandbox Code Playgroud) android android-textwatcher onkeylistener addtextchangedlistener
我也是安卓新手。我尝试开发一个 android 应用程序来获取用户输入项的总数。这是我的应用程序的草图。在此处输入图片说明
用户必须输入First Row Col1 和Col 2。但是First Row Col3 可以输入也可以不输入。在 Sub 1 textview 中,应显示第一行的总值。此值也应显示在结果文本视图中。同样,如果用户将数据插入到第二行,则值必须在 Col1 和 Col2 下输入。如果用户喜欢,可以在第 3 列下输入值。第二行总值应显示在子 2 文本视图中。如果用户将值输入到第二行,则结果文本视图应自动更新为子 1 和子 2 文本视图的总值。我尝试按如下方式执行此操作,但我找不到正确的方法来执行此操作。请如果有人帮我解决这个问题,我真的很感激。这是java类
public class AddTwo extends AppCompatActivity {
EditText edit1, edit2, edit3;
EditText edit4, edit5, edit6;
TextView textViewSub1, textViewSub2, textViewResult;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_add_two);
/*First row variables*/
edit1 = (EditText) findViewById(R.id.editText1);
edit2 = (EditText) findViewById(R.id.editText2);
edit3 = (EditText) findViewById(R.id.editText3);
textViewSub1 …Run Code Online (Sandbox Code Playgroud) 我使用RxTextView.textChanges的EditText,当用户键入的变化值EditText,以数字转换为货币格式如下图所示:
1,000
Run Code Online (Sandbox Code Playgroud)
但是我看不到任何将数字转换为货币格式的数字。
我正在使用来自: NumberFormat.getNumberInstance(Locale.US).format(productPrice);
我的代码就像下面这样:
Observable<CharSequence> observableDiscountPrice = RxTextView.textChanges(discountPriceEdittext);
observableDiscountPrice.map(new Function<CharSequence, Boolean>() {
@Override
public Boolean apply(@io.reactivex.annotations.NonNull CharSequence charSequence) throws Exception {
try {
if (charSequence.length() > 0) {
String pPrice = NumberFormat.getNumberInstance(Locale.US).format(charSequence.toString());
originalPriceEdittext.setText(String.valueOf(pPrice));
return true;
} else {
return false;
}
} catch (Exception e) {
return true;
}
}
}).subscribe(new Subject<Boolean>() {
@Override
public boolean hasObservers() {
return false;
}
@Override
public boolean hasThrowable() {
return false; …Run Code Online (Sandbox Code Playgroud)