我正在通过从另一个布局扩展一个EditText视图来创建一个EditText侦听器。侦听器无法正常工作。我正在尝试将打印语句放在下面,但是在之后都没有调用它们digitText.addTextChangedListener(...)
。调用之前的任何内容。我确保ID是正确的,并且没有得到使视图膨胀的空指针。关于它为什么不起作用的任何建议?
public void digitsListener () {
LayoutInflater inflater = this.getLayoutInflater();
View dialpadLayout = inflater.inflate(R.layout.dialpad, null);
EditText digitText = (EditText)dialpadLayout.findViewById(R.id.digits);
digitText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println("If this prints it works.");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
这是Dialpad.xml内的EditText视图
<EditText
android:id="@+id/digits"
android:layout_width="0dip"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:focusable="true"
android:gravity="center"
android:layout_weight="0.6"
android:inputType="number"
android:scrollHorizontally="true"
android:textSize="40sp"/>
您EditText
必须在屏幕上可见才能进行交互,因此可能不需要inflater
。inflater
每次放大视图时,该方法都会返回一个新对象。因此,EditText
您要与之互动的是与充气机返回的人不同的。如果您处于“活动”中,则可以通过这种方式更改代码。
public void digitsListener () {
EditText digitText = (EditText) findViewById(R.id.digits);
digitText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println("If this prints it works.");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句