我正在通过从另一个布局中膨胀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"/>
答案 0 :(得分:0)
您的EditText
必须在屏幕上显示才能与之互动,因此您可能不需要inflater
。 inflater
每次向视图膨胀时都会返回一个新对象。因此,您与之交互的EditText
与inflater返回的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) {
}
});
}
不同。如果您在Activity中,则可以通过这种方式更改代码。
{{1}}
答案 1 :(得分:0)
你在Android上测试吗?然后没有System.out.print()
您需要使用LogCat:
Log.i("tag", "If this prints it works");
只需选择你想要的任何标签,它真的无关紧要,你只需要通过在logcat上面的搜索框中使用标签来找到它(例如标签:错误)
“Log.i”用于提供信息,“Log.w”用于警告,“Log.e”用于提供错误消息
如果您希望在手机上显示信息,则可以改为使用Toast:
Toast toast = Toast.makeText(getApplicationContext(), "If this prints it works", Toast.LENGTH_SHORT);
toast.show();
(见here)