2013-07-05 95 views
0

我正在通过从另一个布局中膨胀EditText视图来创建EditText侦听器。听众不起作用。我试图在下面放置打印语句,但是在digitText.addTextChangedListener(...)之后都没有打印。在它被调用之前的任何事情。我确信id是正确的,它没有得到一个空指针来扩大视图。有关为什么它不起作用的任何建议?EditText侦听器未运行

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 
     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

没有是System.out.print()的机器人。使用日志,而不是 – cgalvao1993

回答

0

EditText必须是在屏幕上可见,以便您可以与互动里面的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) { 
       } 
      }); 
} 
+0

卸下充气崩溃()上'digitText.addTextChangedListener程序(新TextWatcher ..'用NPE – ono

+0

考虑一下吧。如果findViewById返回null意味着你的EditText是不可见的,我错了? – Blackbelt

+0

这里是我的情况:此活动正在调用4个其他片段作为选项卡,我在主活动中运行此侦听器,而不是其中一个片段。我应该将它放在适当的片段中吗? – ono

0

你在Android上测试吗?那么有没有System.out.print()

您需要使用的logcat来代替:

Log.i("tag", "If this prints it works");
只要选择你想要的任何标记,它真的并不重要,你只需要通过使用标签找到它:(例如标签:错误)在上述logcat的搜索框

“Log.i”是信息,“Log.w”的警告,“Log.e”错误的消息

如果你想显示

消息在您的手机上,您可以使用Toasts代替:

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

(见here

+0

不,手机插入,我看在Eclipse的LogCat上的陈述 – ono

+0

不改变任何东西,没有'System.out.print' –

+0

吐司也没有出现 – ono

相关问题