EditText侦听器未运行

时间:2013-07-05 16:41:35

标签: android android-edittext

我正在通过从另一个布局中膨胀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"/>

2 个答案:

答案 0 :(得分:0)

您的EditText必须在屏幕上显示才能与之互动,因此您可能不需要inflaterinflater每次向视图膨胀时都会返回一个新对象。因此,您与之交互的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