簡體   English   中英

獲取以編程方式創建的視圖標簽

[英]get view tag created programmatically

在onCreate()方法中,我正在以編程方式創建帶有標簽的TextEdit,如下所示:

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)以編程方式創建一個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);

        }
    }

希望對其他開發人員有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM