0

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

2 回答 2

0

你在安卓上测试吗?然后没有System.out.print()

您需要改用 LogCat:

Log.i("tag", "If this prints it works");
只需选择您想要的任何标签,这真的没关系,您只需要通过在 logcat 上方的搜索框中使用 tag: (eg tag:error) 来找到它

“Log.i”用于信息,“Log.w”用于警告,“Log.e”用于错误消息

如果您希望消息显示在手机上,您可以使用 Toasts 代替:

Toast toast = Toast.makeText(getApplicationContext(), "If this prints it works", Toast.LENGTH_SHORT);
toast.show();

(见这里

于 2013-07-05T16:49:22.227 回答
0

EditText必须在屏幕上可见才能与之交互,因此您可能不需要inflater. inflater每次膨胀视图时都会返回一个新对象。因此, EditText您与之交互的对象与充气机返回的对象不同。如果您在 Activity 中,则可以通过这种方式更改代码。

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) {
                }
            });
}
于 2013-07-05T16:47:14.317 回答