2015-03-25 53 views
1

在onCreate()方法,我创建一个标签的文本编辑程序,象这样:获取视图标签创建程序

EditText et = new EditText(getApplicationContext()); 
et.setTag(field.getFieldId()); 
et.setBackgroundResource(R.drawable.textbox); 
et.setTextColor(getResources().getColor(R.color.noir)); 

parentLayout.addView(et); 

在afterTextChanged()方法,我希望检索的EditText标签来获取用户输入的文字。

我试过这个代码,但我得到的NullPointerException:

EditText et = (EditText) parentLayout.findViewWithTag("4249"); 
String strValue = et.getText().toString(); 

你能帮助我请!

谢谢。

+1

显示'logcat'和行'NPE'被抛出 – hrskrs 2015-03-25 12:22:11

+0

其实我找到了parentLayout不是EditText的真正父母,它也是一个linearLayout,它也是以编程方式创建的,所以我编辑了我的代码,如下所示:LinearLayout layout =(LinearLayout)parentll.findViewWithTag(field.getFieldId()); \t \t \t \t EditText et =(EditText)layout.findViewWithTag(field.getFieldId()); \t \t \t \t String strValue = et.getText()。toString();我在这里得到NullPointer异常:EditText et =(EditText)layout.findViewWithTag(field.getFieldId()); – 2015-03-25 12:29:48

回答

0

嗯,我自己找到了解决方案。

1)创建一个EditText编程,设置自定义TextWatcher并添加的EditText它:

EditText et = new EditText(getApplicationContext()); 
        et.setTag(field.getFieldId()); 
        et.setBackgroundResource(R.drawable.textbox); 
        et.setTextColor(getResources().getColor(R.color.noir)); 
et.addTextChangedListener(new CustomTextWatcher(et)); 

2)创建自定义TextWatcher:

private class CustomTextWatcher implements TextWatcher{ 

      private EditText editText; 

      private MyTextWatcher(EditText editText) { 
      this.editText = editText; 
      } 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 

     } 
     @Override 
     public void afterTextChanged(Editable s) { 

      String strValue = this.editText.getText().toString(); 
      Log.d("afterTextChanged", strValue); 

     } 
    } 

希望能够帮助其他开发人员。

相关问题