如何删除动态创建的 EditText?

How to remove a dynamically created EditText?

我想删除我动态创建的编辑文本,但我找不到该编辑文本 ID。基本上我不知道...

我用这段代码创建了 Edittext..

public void addEditText() {

    // add edittext
    etPincode = new EditText(mActivity);
    allEt.add(etPincode);
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    p.setMargins(0, 5, 0, 0);

    etPincode.setLayoutParams(p);
    etPincode.setId(numberOfLines + 1);
    etPincode.setPadding(50,50,50,50);
    etPincode.setBackgroundResource(R.drawable.et_rectangular_noradius);
    etPincode.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
    int maxLength = 10;
    InputFilter[] fArray = new InputFilter[1];
    fArray[0] = new InputFilter.LengthFilter(maxLength);
    etPincode.setFilters(fArray);
    Log.v("etttId1", String.valueOf(etPincode.getId()));
    Log.v("etttId2", String.valueOf(numberOfLines));

    llPincode.addView(etPincode);
    numberOfLines++;
}

和此代码用于从 edittext.

中检索值
strings[] = new String[allEt.size()];
    for(int i=0; i < allEt.size(); i++){
        strings[i] = allEt.get(i).getText().toString();
        pincodeArray.add(strings[i]);
    }

    pincodes= String.valueOf(pincodeArray);

我想删除我的 edittext 并且还想在 edittext 的右侧添加一个删除图像。

您可以使用 llPincode 删除它

如果 llPincode 只有一个 child 或者你知道位置然后使用:

llPincode.removeChildAt(position);

如果 llPincode 有多个视图则使用循环

foreach(int i=0; i< llPincode.toChildCount; i++){
    if(view instance of EditText){
        llPincode.removeChildAt(i)
    }
}

由于您已经在 addEditText() 之外保存了对 etPincode 的引用,您可以简单地执行以下操作:

public void removeEdit(){
    llPincode.removeView(etPincode);
}