这真的很奇怪,昨天我问了问题Yesterdays question如何实现多个editText监听器以避免重复我的代码。我得到了一个答案(我发誓我试过了),但今天我没有得到它。我正在尝试执行以下操作,但在尝试设置tw Textwatcher时出现Cannot instantiate the type TextWatcher
错误。
**TextWatcher tw = new TextWatcher();**
intTextValue.addTextChangedListener(tw);
任何帮助将不胜感激。它开始让我有点疯狂。
最终我试图达到以下情况(这应该很简单?)。
public class myClass extends Activity implements OnFocusChangeListener, TextWatcher {
private EditText et;
private EditText et1;
private EditText et2;
private int whoHasFocus= 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1);
et = (EditText)findViewById(R.id.et);
et.setOnFocusChangeListener(this);
et.addTextChangedListener(tw);
et1 = (EditText)findViewById(R.id.et);
et1.setOnFocusChangeListener(this);
et1.addTextChangedListener(tw);
et2 = (EditText)findViewById(R.id.et);
et2.setOnFocusChangeListener(this);
et2.addTextChangedListener(tw);
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
switch (v.getId()) {
case R.id.et:
whoHasFocus =1;
break;
case R.id.et1:
whoHasFocus =2;
break;
case R.id.et2:
whoHasFocus=3;
break;
}
}
@Override
public void afterTextChanged(Editable s) {
switch (whoHasFocus) {
case 1:
//do code
break;
case 2:
//do code
break;
case 3:
//do code
break;
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:4)
您不需要TextWatcher实例,只需使用“this”
即可et.addTextChangedListener(this);
et1.addTextChangedListener(this);
et2.addTextChangedListener(this);
答案 1 :(得分:0)
TextWatcher是一个界面。你不能实现接口。类需要实现接口,并且可以实例化该类。所以你需要创建一个类,无论是否匿名类都无关紧要,并实现这一点。
示例:
TextWatcher tw = 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) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};
答案 2 :(得分:0)
还要确保ID正确无误 R.id.et用于所有三个EditText s
答案 3 :(得分:0)
游戏的后期,但如果你不提前知道你需要多少听众,我就会采用程序化方式。只需让函数在每次创建新视图时返回一个新的侦听器,然后将其附加到该视图。
List